数据库错误无效值

时间:2016-04-22 04:59:20

标签: mysql database

我的数据库出错了。我遇到timestamp的无效默认值。我怎样才能解决这个问题。

这是我的数据库:

CREATE TABLE IF NOT EXISTS `thread` (
`id` int(11) NOT NULL,
  `title` varchar(100) NOT NULL,
  `dateCreated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `userId` int(11) NOT NULL,
  `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `categoryId` int(11) NOT NULL,
  `view` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `user`
--

CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL,
  `fullname` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `username` varchar(60) NOT NULL,
  `password` varchar(60) NOT NULL,
  `timestamp` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `profileUrl` varchar(200) NOT NULL DEFAULT 'https://mymonas.com/forum/img/nophoto.png',
  `profileBg` varchar(200) NOT NULL,
  `dateCreated` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `aboutMe` varchar(500) NOT NULL,
  `isModerator` tinyint(4) NOT NULL DEFAULT '0'
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;

2 个答案:

答案 0 :(得分:0)

我的猜测是你正在运行MySQL 5.5。如果是这种情况,则无法在DATETIME中使用CURRENT_TIMESTAMP。 DATETIME必须具有默认值null或无默认值。但是,您可以将它们更改为TIMESTAMP,但是每个表只能有一个默认值和一个ON UPDATE。您还可以使用插入后触发器在新记录上填写NOW()值。 Here's要提供帮助的文档。

答案 1 :(得分:0)

使用TIMESTAMP而不是datetime This可能会有所帮助。

相关问题