2009-02-26 56 views
3

我们一直在使用ColdFusion和MySQL进行一些测试,并且有点困惑。我们知道在/etc/my.cnf文件中可以设置不同的'sql-mode'标志,这会根据定义的模式导致MySQL以某种方式运行。我们知道每当使用'--sql-mode ='标志启动MySQL时,您也可以设置这些标志。在/etc/my.cnf中,我们看到没有定义模式(其中一个被注释掉了),所以我们添加了'sql-nodes ='“'并重新启动了mysql(/etc/init.d/mysqld restart) )。每当我们去MySQL命令行,看看是什么设置模式,这里的输出:MySQL/ColdFusion 8:sql-mode

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 

这表明全球SQL模式是空的,而会话SQL模式设置为“STRICT_TRANS_TABLES”这是我们不想要的。

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

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

你们对发生了什么有什么建议或想法吗?就好像ColdFusion将它设置在某个地方一样,但是ColdFusion管理员没有任何东西可以设置。

回答

5

我做了这一个小小的研究,它看起来像它与Java或者JDBC的兼容性问题:

驱动程序需要能够执行对 截断检查JDBC兼容的STRICT_TRANS_TABLES模式。

如果您不能使用STRICT_TRANS_TABLES为您的sql_mode的一部分,那么你就必须加入“jdbcCompliantTruncation =假”的URL配置 参数来禁用 截断检查。

这里找到:http://bugs.mysql.com/bug.php?id=23371

1

我的猜想是在CF/JDBC连接的某个地方缓存该信息。你有没有尝试重新启动CF或添加新的数据源,看看会发生什么?

+0

我们重新启动了Coldfusion 8多次。我们已经使用Coldfusion Administrator和adminapi CFC添加了多个数据源。 我现在唯一的选择是支付Adobe 250美元告诉我什么是错的。 UGH – 2009-02-26 18:44:41

0

基于什么奔末日说,你可能会想尝试建立一个数据源使用MySQL的MyODBC的驱动程序MySQL来看看你得到不同的结果。