MySQL / ColdFusion 8: sql-mode - PullRequest
       20

MySQL / ColdFusion 8: sql-mode

3 голосов
/ 26 февраля 2009

Мы провели некоторое тестирование с ColdFusion и MySQL и немного озадачены. Мы знаем, что в файле /etc/my.cnf вы можете установить различные флаги 'sql-mode', которые приведут к тому, что MySQL будет вести себя определенным образом, в зависимости от определенных режимов. Мы знаем, что вы также можете установить эти флаги при запуске MySQL с помощью флагов --sql-mode =.

В /etc/my.cnf мы видим, что не было определено ни одного режима (один был закомментирован), поэтому мы добавили 'sql-node = "" и перезапустили 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

Это показывает, что глобальный sql-режим пуст, а Session-sql-mode установлен на STRICT_TRANS_TABLES, что нам не нужно.

Теперь я могу установить Sql-режим Session пустым в ColdFusion, прежде чем мы сделаем что-нибудь еще, что дает мне желаемый эффект, но я не хочу переходить к каждому запросу и добавлять его.

Я (пытался) заглянуть в скрипт /etc/init.d/mysqld, чтобы посмотреть, смогу ли я найти, где он будет устанавливать режим, но ничего не увидел.

У вас, ребята, есть ЛЮБЫЕ предложения или мысли о том, что происходит? Как будто ColdFusion его где-то настраивает, однако в Администраторе ColdFusion нет ничего такого, что могло бы установить это.

Ответы [ 3 ]

5 голосов
/ 26 февраля 2009

Я провел небольшое исследование по этому вопросу, и похоже, что это проблема совместимости с Java или JDBC:

Драйверу необходимо включить режим STRICT_TRANS_TABLES, чтобы обеспечить соблюдение JDBC для проверки усечения.

Если вы не можете использовать STRICT_TRANS_TABLES как часть вашего sql_mode, вам придется отключить проверка усечения путем добавления «jdbcCompliantTruncation = false» в качестве конфигурации URL параметр.

Найдено здесь: http://bugs.mysql.com/bug.php?id=23371

1 голос
/ 26 февраля 2009

My догадываюсь , что где-то в соединении CF / JDBC кеширует эту информацию. Вы пытались перезапустить CF или добавить новый источник данных, чтобы посмотреть, что произойдет?

0 голосов
/ 26 февраля 2009

Исходя из того, что сказал Бен Дум, вы можете попытаться настроить источник данных, используя драйвер MyODBC MySQL для MYSQL, чтобы увидеть, если вы получите другой результат.

...