1. 程式人生 > >MySQL sql_mode設置

MySQL sql_mode設置

user -- add str inux prim linu gin html

在MySQL5.7版本中創建表

CREATE TABLE `investor_seat` (
  `id` int(11) NOT NULL AUTO_INCREMENT ,
  `investorId` int(11) NOT NULL  COMMENT ‘投資人id‘,
  `seatId` int(11) NOT NULL  COMMENT ‘席位id‘,
  `maybe` float NOT NULL COMMENT ‘席位歸屬某幫派或者某人的概率‘,
  `investorName` varchar(28) NOT NULL COMMENT ‘投資人名含機構‘,
  `seatName` varchar(
108) NOT NULL COMMENT ‘席位名‘, `status` TINYINT NOT NULL DEFAULT 0 COMMENT ‘投資人席位狀態‘, `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updateTime` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARSET = utf8;

註意updateTime字段,會在創建的時候報錯:

[Err] 1067 - Invalid default value for ‘updateTime‘

查找了原因,是要設置sql_mode

查看MySQL的sql_mode配置:

mysql> show variables like ‘sql_mode‘;
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value
                                    
| +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+ | sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +---------------+-------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set, 1 warning (0.00 sec)

將mysql安裝文件裏面的my-default.ini(windows)//etc/my.cnf(Linux)裏面添加設置:

sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

http://www.nowck.com/archives/70.html

http://blog.csdn.net/wyzxg/article/details/8787878

MySQL sql_mode設置