0

当我尝试通过以下命令导入数据时出现错误:

mysql -u root -p"root" cvdb < "cvdb.sql"

我得到的错误是:

第 72 行的 ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 14 Created行的 '(14) NOT NULL, datetime NOT NULL default ' 0000-00-00 00:00:00 ', '附近使用正确的语法

我的 SQL 文件的代码是:

DROP TABLE IF EXISTS `activity`;
CREATE TABLE `activity` (
  `AllDay` enum('YES','NO') default 'NO',
  `ActivityID` int(11) unsigned NOT NULL auto_increment,
  `Type` int(11) NOT NULL default '0',
  `Priority` int(11) NOT NULL default '0',
  `Status` int(11) NOT NULL default '0',
  `Title` varchar(255) default NULL,
  `DueDate` datetime default NULL,
  `CompletedDate` datetime default NULL,
  `Details` text,
  `Creator` int(11) NOT NULL default '0',
  `Owner` int(11) default NULL,
  `ModifiedBy` int(11) default NULL,
  `Modified` timestamp(14) NOT NULL,
  `Created` datetime NOT NULL default ' 0000-00-00 00:00:00 ',
  `Start` datetime default NULL,
  `End` datetime default NULL,
  `AttachmentType` enum('NONE','FILE','LINK') NOT NULL default 'NONE',
  `Location` varchar(25) default NULL,
  `visibility` enum('PRIVATE','PUBLIC') NOT NULL default 'PRIVATE',
  `Notes` varchar(255) default NULL,
  PRIMARY KEY  (`ActivityID`),
  UNIQUE KEY `ActivityID` (`ActivityID`),
  KEY `Type` (`Type`),
  KEY `Priority` (`Priority`),
  KEY `Status` (`Status`),
  KEY `Creator` (`Creator`),
  KEY `Owner` (`Owner`),
  KEY `ModifiedBy` (`ModifiedBy`),
  KEY `Location` (`Location`)
) ENGINE=InnoDB;
4

2 回答 2

0

错误在这里Modified timestamp(14) NOT NULL。你应该(14)从时间戳中删除。

你的偏DDL

  `ModifiedBy` int(11) default NULL,
  `Modified` timestamp NOT NULL,
  `Created` datetime NOT NULL default '0000-00-00 00:00:00', 
  `Start` datetime default NULL,
于 2013-01-11T09:46:08.817 回答
0

来自mysql文档

不兼容的变化:在非常旧的 MySQL 版本(4.1 之前)中,TIMESTAMP 数据类型支持显示宽度,从 MySQL 4.1 开始被忽略。这在 MySQL 5.1 中已弃用,并在 MySQL 5.5 中完全删除。当尝试将 TIMESTAMP(N) 列与 MySQL 5.5 或更高版本的服务器一起使用时,这些行为更改可能会导致两个问题场景:

...

在执行任何升级之前,您应该尝试通过使用 ALTER TABLE 更新数据库中的任何 TIMESTAMP(N) 列来主动处理这些类型的潜在问题,以便它们使用 TIMESTAMP 代替。

所以尝试删除(14) in

Modified timestamp(14) NOT NULL

或如文档中所述,尝试alter table在导入之前对您的时间戳列进行声明。

于 2013-01-11T09:48:04.757 回答