在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语句执行没有效果呢?请指点,多谢。

解决方案 »

  1.   

    没有你所说的问题。
    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>
      

  2.   

    你的PHPADMIN每次是不是重新创建连接了?你直接 set @x=1;然后也同样试试@x是否保留了?
      

  3.   

    谢谢, 在命令行中是可以。 就是在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和命令行)应该是一回事吧。
      

  4.   

    可能性不大,因为phpmyadmin是基于HTTP协议的,而HTTP协议是无连接的。
      

  5.   

    那这个执行存到哪里了?
    数据库运行所占的内存中。设置sql-mode的这两种办法(my.ini和命令行)应该是一回事吧。
    显然不是一会事儿。
    命令行中只是改得当前数据库实例中内存中的参数。而INI文件是启动参数文件。
      

  6.   

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

  7.   

    在服务器的数据库上执行 SET @@session.sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; 
    显示成功,可是查询 SELECT @@session.sql_mode; 还是有 STRICT_TRANS_TABLES字段,没有变化。 2天了,这个STRICT_TRANS_TABLES问题没有解决,程序不能正常安装。