MYSQL脚本导入错误

时间:2013-01-11 09:44:45

标签: mysql sql

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

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

我得到的错误是:

  

第72行的错误1064(42000):您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近'(14)NOT NULL,     Created datetime NOT NULL默认'0000-00-00 00:00:00',     '第14行

我的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;

2 个答案:

答案 0 :(得分: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,

答案 1 :(得分:0)

来自mysql doc

  

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

     

...

     

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

因此,请尝试删除(14)

Modified timestamp(14) NOT NULL

或如文档中所述,在导入之前尝试在时间戳列上生成alter table语句。