2009-02-26 8 views
3

Wir haben einige Tests mit ColdFusion und MySQL durchgeführt und sind ein wenig verwirrt. Wir wissen, dass es verschiedene "sql-mode" -Flags gibt, die Sie in der Datei /etc/my.cnf setzen können, was dazu führt, dass sich MySQL abhängig von den definierten Modi verhält. Wir wissen, dass Sie diese Flags auch setzen können, wenn Sie MySQL mit '--sql-mode =' Flags starten.MySQL/ColdFusion 8: sql-mode

In /etc/my.cnf sehen wir, dass keine Modi definiert waren (einer wurde auskommentiert), also haben wir 'sql-nodes = ""' hinzugefügt und mysql (/etc/init.d/mysqld restart) neu gestartet). Jedes Mal, wenn wir mit dem MySQL-Kommandozeile gehen, um zu sehen, welcher Modus eingestellt ist, ist hier die Ausgabe:

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) 

Das sagt mir, dass es keinen Modus, das ist das, was wir gehen für. die gleiche Sache in Coldfusion jedoch tun 8, sehen wir folgendes:


SELECT @@GLOBAL.sql_mode; 
[empty string] 


SELECT @@SESSION.sql_mode; 
STRICT_TRANS_TABLES 

Dies zeigt die globale SQL-Modus ist leer, während der Session SQL-Modus auf 'STRICT_TRANS_TABLES' gesetzt was wir nicht wollen.

Jetzt kann ich den Session-SQL-Modus in ColdFusion leer lassen, bevor wir etwas anderes machen, was mir den gewünschten Effekt gibt, aber ich möchte nicht wirklich zu jeder Abfrage gehen und das hinzufügen.

Ich (versuchte) sah in der /etc/init.d/mysqld Skript, um zu sehen, ob ich finden könnte, wo es den Modus einstellen würde, aber nichts gesehen.

Haben Sie irgendwelche Vorschläge oder Gedanken zu dem, was vor sich geht? Es ist, als ob ColdFusion es irgendwo einstellen würde, aber es gibt nichts im ColdFusion Administrator, das ich sehen könnte, dass dies einstellen würde.

Antwort

5

habe ich ein wenig Forschung auf diesem, und es sieht aus wie es mit Java oder JDBC ein Kompatibilitätsproblem ist:

Der Fahrer muss den STRICT_TRANS_TABLES Modus aktiviert JDBC Compliance auf Abschneiden Kontrollen durchzusetzen.

Wenn Sie nicht STRICT_TRANS_TABLES als Teil Ihrer sql_mode verwenden können, dann werden Sie Verkürzungs Prüfungen deaktivieren müssen, um durch „jdbcCompliantTruncation = false“ als URL-Konfiguration Parameter hinzufügen.

hier gefunden: http://bugs.mysql.com/bug.php?id=23371

1

Meine Schätzung ist, dass irgendwo in der CF/JDBC-Verbindung diese Informationen zwischenspeichert. Haben Sie versucht, CF neu zu starten oder eine neue Datenquelle hinzuzufügen, um zu sehen, was passiert?

+0

Wir haben Coldfusion 8 mehrmals neu gestartet. Wir haben auch mehrere Datenquellen hinzugefügt, die sowohl den Coldfusion Administrator als auch die adminapi CFCs verwenden. Meine einzige Option im Augenblick ist, Adobe 250 $ zu zahlen, um mir zu sagen, was los ist. UGH –

+1

nun hoffentlich kam Ben Dooms Antwort danach und löste es? –

0

Basierend auf, was gesagt Ben Doom, möchten Sie vielleicht versuchen, eine Datenquelle mit Hilfe von MySQL MyODBC-Treiber für MySQL einrichten, um zu sehen, wenn Sie ein anderes Ergebnis zu bekommen.