mysql 5.6 mysql 5.7 设置非严格模式

[root@localhost ~]# mysql --version
mysql  Ver 14.14 Distrib 5.6.47, for Linux (x86_64) using  EditLine wrapper
[root@localhost ~]#
在mysql的配置文件my.cnf的[mysqld]模块下添加

sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

可以直接使用命令来验证是否生效:

set global SQL_MODE="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

创建测试表和插入数据: 

create table t1(id int,name VARCHAR(100)  not null);
insert into t1(id)VALUES(1);

删除创建的测试表t1:

drop table t1;

这种方法并不能解决date时间字段,比如

  `ssr` date NOT NULL DEFAULT '0000-00-00' COMMENT '',

可以将ssr的date类型改为timestamp

 `ssr` timestamp NULL DEFAULT '0000-00-00 00:00:00' COMMENT '',

提示invalid default value for update_time(mysql 5.6不会有这个问题,5.7会)

set @@global.sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));

这时可以drop 掉alter table it_student drop column ssr

alter table it_student add column  `ssr` timestamp NULL DEFAULT '0000-00-00 00:00:00' COMMENT ''

你可能感兴趣的:(mysql)