更改sql_mode在PHP查询中不起作用

时间:2018-01-16 19:50:45

标签: php mysql

如果我运行SELECT @@sql_mode,我会在PHP中执行的查询中得到这个:

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

如果我直接在mysql中运行SELECT @@sql_mode或通过远程连接到服务器,我会得到:

NO_ENGINE_SUBSTITUTION

如果我在PHP中运行SET GLOBAL sql_mode=NO_ENGINE_SUBSTITUTION然后SELECT @@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

我已将此添加到我的~/.my.cnf/etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf文件中并重新启动MySQL但仍然没有影响:

[mysqld]
sql_mode="NO_ENGINE_SUBSTITUTION"

我尝试重启整个服务器。没有变化。

PHP从哪里获取MySQL配置?我没有其他my.cnf文件可以告诉我。请帮忙

在流浪汉的Ubuntu 16.04上使用MySQL 5.7。

1 个答案:

答案 0 :(得分:0)

这是由于Laravel <?php if (isset($_SESSION['cid'])){ echo '<script> $(document).ready(function(){ $("#uploadform").show(); $("#needlogon1").hide(); $("#needlogon2").hide(); }); </script>'; } ?> 配置将mysql设置为严格模式引起的。将database.php更改为database.connections.mysql.strict可解决此问题。