当我尝试通过命令导入数据时出现错误:
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;
答案 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
语句。