在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语句执行没有效果呢?请指点,多谢。
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语句执行没有效果呢?请指点,多谢。
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>
“你的PHPADMIN每次是不是重新创建连接了?你直接 set @x=1;然后也同样试试@x是否保留了?”--》貌似是,, 如何设不重新创建连接?
还有一个问题,用命令行执行: SET @@session.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
后, my.ini 文件中的sql-mode没有改变,那这个执行存到哪里了?设置sql-mode的这两种办法(my.ini和命令行)应该是一回事吧。
数据库运行所占的内存中。设置sql-mode的这两种办法(my.ini和命令行)应该是一回事吧。
显然不是一会事儿。
命令行中只是改得当前数据库实例中内存中的参数。而INI文件是启动参数文件。
我买了一个空间,用select 在phpmyadmin中查询sql_mode有 STRICT_TRANS_TABLES字段,可是我的程序必须去掉这个,看来现在唯一的办法就是让他们改my.ini文件了。除此以外,还有什么好办法吗??
显示成功,可是查询 SELECT @@session.sql_mode; 还是有 STRICT_TRANS_TABLES字段,没有变化。 2天了,这个STRICT_TRANS_TABLES问题没有解决,程序不能正常安装。