2009-02-26 7 views
3

Nous avons fait des tests avec ColdFusion et MySQL et sont un peu perplexe. Nous savons qu'il existe différents drapeaux 'mode-sql' que vous pouvez définir dans le fichier /etc/my.cnf, ce qui fera que MySQL se comportera de différentes façons, en fonction des modes définis. Nous savons que vous pouvez également définir ces indicateurs à chaque démarrage de MySQL en utilisant les drapeaux '--sql-mode ='. Dans /etc/my.cnf, nous voyons qu'il n'y avait pas de mode défini (un a été commenté) donc nous avons ajouté 'sql-nodes = ""' et avons redémarré mysql (/etc/init.d/mysqld restart). Chaque fois que nous allons à la ligne de commande MySQL pour voir ce mode est réglé, voici la sortie: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) 

Cela me dit qu'il n'y a pas de mode, ce qui est ce que nous allons faire. Cependant, faire la même chose dans ColdFusion 8, nous voyons ce qui suit:


SELECT @@GLOBAL.sql_mode; 
[empty string] 


SELECT @@SESSION.sql_mode; 
STRICT_TRANS_TABLES 

Cela montre le Global-mode sql est vide, alors que la session sql-mode est réglé sur 'STRICT_TRANS_TABLES' ce qui est ce que nous ne voulons pas.

Maintenant, je peux définir le mode sql Session vide dans ColdFusion avant de faire quoi que ce soit d'autre, ce qui me donne l'effet désiré, mais je ne veux pas vraiment aller à chaque requête et l'ajouter.

I (essayé) regardant dans le script /etc/init.d/mysqld pour voir si je pouvais trouver où il fixerait le mode, mais ne voit rien.

Avez-vous les gars avez des suggestions ou des pensées à ce qui se passe? C'est comme si ColdFusion le définissait quelque part, mais il n'y a rien dans l'Administrateur ColdFusion que je puisse voir qui le définirait.

Répondre

5

J'ai fait un peu de recherche sur ce sujet, et il semble que ce soit un problème de compatibilité avec Java ou JDBC:

Le pilote a besoin du mode STRICT_TRANS_TABLES permis d'assurer la conformité JDBC sur contrôles de troncature.

Si vous ne pouvez pas utiliser STRICT_TRANS_TABLES dans le cadre de votre sql_mode, vous devrez désactiver contrôles de troncature en ajoutant « jdbcCompliantTruncation = false » comme une configuration d'URL paramètre .

trouvés ici: http://bugs.mysql.com/bug.php?id=23371

1

Mon suppose que est que quelque part dans la connexion CF/JDBC met en cache ces informations. Avez-vous essayé de redémarrer CF ou d'ajouter une nouvelle source de données pour voir ce qui se passe?

+0

Nous avons redémarré Coldfusion 8 plusieurs fois. Nous avons également ajouté plusieurs sources de données, en utilisant à la fois l'administrateur Coldfusion et les CFC d'adminapi. Ma seule option actuellement est de payer 250 $ à Adobe pour me dire ce qui ne va pas. UGH –

+1

bien, espérons que la réponse de Ben Doom est venu après cela et résolu? –

0

D'après ce que Ben Doom dit, vous pouvez essayer de créer une source de données en utilisant le pilote MyODBC de MySQL pour MYSQL pour voir si vous obtenez un résultat différent.