执行sql报错
CREATE TABLE `tablename` (
`id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Type` enum ('aa', 'bb') DEFAULT 'aa',
`BranchID` INT (10) UNSIGNED NOT NULL DEFAULT '0',
`Date` date NOT NULL DEFAULT '0000-00-00',
`Name` VARBINARY (8) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
首先查看一下sql_mode
SHOW VARIABLES LIKE 'sql_mode';
结果如下:
结果中有 NO_ZERO_IN_DATE,NO_ZERO_DATE ,从名称上看,就是表示Date数据不能为0。则需要把它们去掉
执行如下命令
SET GLOBAL sql_mode = (SELECT REPLACE (@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));
或者
set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
重新连接一下即可生效。
扩展:
//查看mysql配置文件加载顺序 windows
mysql/bin> mysqld --help --verbose
参考网址:
http://xstarcd.github.io/wiki/MySQL/MySQL-sql-mode.html
https://segmentfault.com/a/1190000005936172