Mysql 创建表时出错
在MySQL终端上粘贴下面的MySQL命令后,我得到了下面的错误。这段代码是我从项目的生产环境中得到的。我想根据生产环境的数据库更新本地数据库Mysql 创建表时出错,mysql,Mysql,在MySQL终端上粘贴下面的MySQL命令后,我得到了下面的错误。这段代码是我从项目的生产环境中得到的。我想根据生产环境的数据库更新本地数据库 mysql> CREATE TABLE `cityguide_pointofinterest` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` varchar(30) COLLATE utf8_danish_ci NOT NULL, ->
mysql> CREATE TABLE `cityguide_pointofinterest` (
-> `id` int(11) NOT NULL AUTO_INCREMENT,
-> `name` varchar(30) COLLATE utf8_danish_ci NOT NULL,
-> `vip` tinyint(1) NOT NULL,
-> `description` longtext COLLATE utf8_danish_ci NOT NULL,
-> `category_id` int(11) NOT NULL,
-> `email` varchar(254) COLLATE utf8_danish_ci,
-> `latitude` double NOT NULL,
-> `longitude` double NOT NULL,
-> `phone` varchar(15) COLLATE utf8_danish_ci,
-> `place` varchar(250) COLLATE utf8_danish_ci DEFAULT NULL,
-> `website` varchar(200) COLLATE utf8_danish_ci,
-> `date_created` datetime(6) NOT NULL,
-> `date_modified` datetime(6) NOT NULL,
-> `views` int(11) NOT NULL,
-> `picture_1` varchar(100) COLLATE utf8_danish_ci,
-> `picture_2` varchar(100) COLLATE utf8_danish_ci,
-> `picture_3` varchar(100) COLLATE utf8_danish_ci,
-> `order_id` varchar(20) COLLATE utf8_danish_ci DEFAULT NULL,
-> PRIMARY KEY (`id`),
-> KEY `cityguide_pointofi_category_id_8ab78aba_fk_cityguide_category_id` (`category_id`),
-> CONSTRAINT `cityguide_pointofi_category_id_8ab78aba_fk_cityguide_category_id` FOREIGN KEY (`category_id`) REFERENCES `cityguide_category` (`id`)
-> ) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解使用near'(6)NOT NULL的正确语法,
date\u modified
datetime(6)不为空,
查看第13行的
int(11)NOT NULL'
mysql>/*!40101 SET character_SET_client=@saved_cs_client*/;
查询OK,0行受影响(0.00秒)我认为您的MYSQL版本是5.5或更低 MySQL 5.7支持时间、日期时间和时间戳值的小数秒,精度高达微秒(6位): 要定义包含小数秒部分的列,请使用 语法类型_name(fsp),其中类型_name是时间、日期时间或 时间戳,fsp是小数秒精度。例如: fsp值(如果给定)必须在0到6之间。值为0表示没有小数部分。如果省略,默认精度为0。(为了与以前的MySQL版本兼容,这与标准SQL默认值6不同。)
在您的查询中,
日期时间(6)
的作用是什么?我的意思是,为什么是6?我很确定它会用datetime
替换所有的datetime(6)
,所以它应该是datetime
?是的,我想是的。我的意思是我总是这样使用它,我不认为你可以在这里设置长度。即使你可以,我也看不出会有什么变化,因为MySQL中的datetime
格式已经在大小上受到限制。datetime
和datetime(6)
之间有什么大的区别吗?
CREATE TABLE t1 (t TIME(3), dt DATETIME(6));