2009-02-26 54 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來看看你得到不同的結果。