在MariaDB上禁用严格模式

11

当我在phpmyadmin运行这个SQL时

SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE; 

它展示了

@@SQL_MODE STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 

@@GLOBAL.SQL_MODE STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 

如何使用phpmyadmin在MariaDB上禁用严格模式?


1
自2010年以来,MySQL和MariaDB一直在分化,现在它们应被视为不同的软件产品(有点像Microsoft SQL Server与Sybase)。您应该告诉我们您使用的是哪一个,并适当标记您的问题。根据您使用的软件不同,对您的问题的答案也会有所不同。 - Bill Karwin
@BillKarwin 我现在正在使用最新版本的MariaDB。 - Dr.Mezo
1
您应该阅读https://mariadb.com/kb/en/library/set/,其中包括:“`使用SET语句更改系统变量不会永久地进行更改。要这样做,必须在配置文件中进行更改。`” 您无法通过phpmyadmin用户界面执行此操作。您必须编辑MariaDB服务器上的配置文件。 - Bill Karwin
1
我已经从你的问题中删除了mysql标签。 - Bill Karwin
3个回答

22

通过SSH进行编辑

/etc/my.cnf文件

添加

sql_mode=NO_ENGINE_SUBSTITUTION

重新启动MariaDB

它将修复此问题。

*编辑-如果您在重启mysql服务时遇到错误,请尝试在my.cnf中添加"[mysqld]"。


5
这对我起作用了。
root@MaRs:/etc/mysql# cat my.cnf|grep -v \#

[client-server]

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION
root@MaRs:/etc/mysql# 

MariaDB [(none)]> SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE; 
+------------------------+------------------------+
| @@SQL_MODE             | @@GLOBAL.SQL_MODE      |
+------------------------+------------------------+
| NO_ENGINE_SUBSTITUTION | NO_ENGINE_SUBSTITUTION |
+------------------------+------------------------+
1 row in set (0.000 sec)

0
你可以使用以下语句在本会话中禁用严格模式:
set session sql_mode= replace((replace((select @@sql_mode), "STRICT_ALL_TABLES", "")), "STRICT_TRANS_TABLES", "");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接