sql-mode 问题,请指点

hanxuallan 2010-06-19 04:31:08
在phpmyadmin中执行
SET @@GLOBAL.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
是没有问题的。

而SET @@session.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
执行成功,但是经查询(SELECT @@session.sql_mode;),并没有更改。

网上资料说:“...你还可以在启动后用SET [SESSION|GLOBAL] sql_mode='modes'语句设置sql_mode变量来更改SQL模式。设置 GLOBAL变量时需要拥有SUPER权限,并且会影响从那时起连接的所有客户端的操作。设置SESSION变量只影响当前的客户端。任何客户端可以随时更改自己的会话 sql_mode值。”

也就是说session的更改只是针对当前用户,为什么哪个session语句执行没有效果呢?

请指点,多谢。
...全文
234 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanxuallan 2010-06-19
  • 打赏
  • 举报
回复
在服务器的数据库上执行 SET @@session.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
显示成功,可是查询 SELECT @@session.sql_mode; 还是有 STRICT_TRANS_TABLES字段,没有变化。

2天了,这个STRICT_TRANS_TABLES问题没有解决,程序不能正常安装。
hanxuallan 2010-06-19
  • 打赏
  • 举报
回复
感谢 ACMAIN_CHM 的回复。

如果说在phpmyadmin中运行命令,更改sql_mode的数值只是存在内存中的话,数据库重启就全都没了。
我买了一个空间,用select 在phpmyadmin中查询sql_mode有 STRICT_TRANS_TABLES字段,可是我的程序必须去掉这个,看来现在唯一的办法就是让他们改my.ini文件了。

除此以外,还有什么好办法吗??
ACMAIN_CHM 2010-06-19
  • 打赏
  • 举报
回复
[Quote]还有一个问题,用命令行执行: SET @@session.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
后, my.ini 文件中的sql-mode没有改变,那这个执行存到哪里了?
[/Quote]
那这个执行存到哪里了?
数据库运行所占的内存中。

设置sql-mode的这两种办法(my.ini和命令行)应该是一回事吧。
显然不是一会事儿。
命令行中只是改得当前数据库实例中内存中的参数。而INI文件是启动参数文件。
ACMAIN_CHM 2010-06-19
  • 打赏
  • 举报
回复
[Quote]貌似是,, 如何设不重新创建连接?[/Quote]可能性不大,因为phpmyadmin是基于HTTP协议的,而HTTP协议是无连接的。

hanxuallan 2010-06-19
  • 打赏
  • 举报
回复
谢谢, 在命令行中是可以。 就是在PHPADMIN中不管用。


“你的PHPADMIN每次是不是重新创建连接了?

你直接 set @x=1;

然后也同样试试@x是否保留了?”--》

貌似是,, 如何设不重新创建连接?


还有一个问题,用命令行执行: SET @@session.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
后, my.ini 文件中的sql-mode没有改变,那这个执行存到哪里了?

设置sql-mode的这两种办法(my.ini和命令行)应该是一回事吧。

ACMAIN_CHM 2010-06-19
  • 打赏
  • 举报
回复
你的PHPADMIN每次是不是重新创建连接了?

你直接 set @x=1;

然后也同样试试@x是否保留了?
ACMAIN_CHM 2010-06-19
  • 打赏
  • 举报
回复
没有你所说的问题。
mysql> SELECT @@session.sql_mode;
+--------------------+
| @@session.sql_mode |
+--------------------+
| |
+--------------------+
1 row in set (0.06 sec)

mysql> SET @@session.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
Query OK, 0 rows affected (0.05 sec)

mysql> SELECT @@session.sql_mode;
+--------------------------------------------+
| @@session.sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)

mysql>
xilaianzxsc 2010-06-19
  • 打赏
  • 举报
回复
不好意思,不是太懂

56,675

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧