在给 mysql 的 create_time 之类设置默认值 0000-00-00 00:00:00
的时候,会报错,原因是不符合日期的基本格式
主要是 sql_mode
来决定的,先查看下 sql_mode
的值,进入 mysql
命令行模式:
select @@sql\_mode;
没有修改前,值可能是这样的:
ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
主要是 NO_ZERO_IN_DATE,NO_ZERO_DATE
导致的,如果要修改其值,网上有说直接 set global 值的,貌似是没法直接设置值的。
sql_mode
本身是在 mysql 的 performance_schema/session_variables
下的一个字段,直接数据库修改值貌似也是不行的。
后来找到一个解决方案:
mac 下没有 my.cnf 文件,默认在 mysql 的安装路径下的
mysql/support-files
下有个my-default.cnf
配置文件,然后可以将这个文件 cp 到 mysql 的安装目录下,改名my.cnf
,mysql 默认会读取这个配置。在 windows 下是my.ini
文件,然后修改一下,将sql_mode
改为
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTI
主要是去掉NO_ZERO_IN_DATE,NO_ZERO_DATE
即可,然后重启 mysql 生效
查找 mysql 的安装路径:
which mysql // '/usr/local/bin/mysql'
ll /usr/local/bin/mysql // 即可找到对应的安装路径
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于