当前位置:  开发笔记 > 编程语言 > 正文

MySQL/ColdFusion 8:sql-mode

如何解决《MySQL/ColdFusion8:sql-mode》经验,为你挑选了1个好方法。

我们一直在用ColdFusion和MySQL做一些测试,有点困惑.我们知道你可以在/etc/my.cnf文件中设置不同的'sql-mode'标志,这将导致MySQL以某种方式运行,具体取决于定义的模式.我们知道,每当使用'--sql-mode ='标志启动MySQL时,您也可以设置这些标志.

在/etc/my.cnf中,我们看到没有定义模式(一个被注释掉)所以我们添加了'sql-nodes =""'并重新启动了mysql(/etc/init.d/mysqld restart).每当我们转到MySQL命令行来查看设置的模式时,这是输出:

mysql> SELECT @@GLOBAL.sql_mode;
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
|                   | 
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT @@SESSION.sql_mode;
+--------------------+
| @@SESSION.sql_mode |
+--------------------+
|                    | 
+--------------------+
1 row in set (0.00 sec)

这告诉我没有模式,这就是我们想要的.但是,在ColdFusion 8中做同样的事情,我们看到以下内容:


SELECT @@GLOBAL.sql_mode;
[empty string]


SELECT @@SESSION.sql_mode;
STRICT_TRANS_TABLES

这表明Global sql-mode为空,而Session sql-mode设置为' STRICT_TRANS_TABLES',这是我们不想要的.

现在,我可以在我们做任何其他事情之前将Session sql-mode设置为ColdFusion为空,这给了我想要的效果,但我真的不想去每个查询并添加它.

我(尝试)查看/etc/init.d/mysqld脚本,看看我是否能找到它将设置模式的位置,但没有看到任何内容.

你们对正在发生的事情有任何建议或想法吗?就好像ColdFusion将它设置在某个地方一样,但是ColdFusion Administrator中没有任何内容可以让我看到它会设置它.



1> Ben Doom..:

我对此做了一些研究,看起来它与Java或JDBC的兼容性问题:

驱动程序需要启用STRICT_TRANS_TABLES模式才能在截断检查时强制执行JDBC合规性.

如果您不能将STRICT_TRANS_TABLES用作sql_mode的一部分,则必须通过添加"jdbcCompliantTruncation = false"作为URL配置参数来禁用截断检查.

在此处找到:http://bugs.mysql.com/bug.php?id = 23371

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有