Как вернуть NULL вместо 0 из MySQL TinyInt (1) - PullRequest
0 голосов
/ 03 сентября 2018

Я переместил сайт из ColdFusion 10 в ColdFusion 2016 и заметил, что при запросе базы данных MySql поля tinyint(1), которые равны null, ранее возвращались в ColdFusion как пустые значения, но теперь возвращаются как 0.

Кто-нибудь знает, если это MySql или CF2016, и как я могу заставить его возвращать пустые значения снова?

Я гуглил, но все результаты, похоже, сводятся к превращению 0 в null. Мне нужно наоборот! CF2018, похоже, изменил свою нулевую поддержку , но я не могу найти ничего, связанного с C2016.

1 Ответ

0 голосов
/ 06 сентября 2018

Для драйверов MySQL JDBC существует свойство tinyInt1isBit, которое устанавливается как true по по умолчанию (Когда это поле true, tinyint(1) будет рассматриваться как поле bit ). Эту функцию можно изменить, изменив строку подключения, добавив к ней tinyInt1isBit=false.

jdbc:mysql://10.0.0.140:3306/testdb?tinyInt1isBit=false

Но когда мы создаем источник данных ColdFusion, tinyInt1isBit=false будет добавлен в строку подключения по умолчанию (из моего личного опыта). Это можно увидеть в файле ColdFusion2016\cfusion\lib\neo-datasource.xml при локальной установке.

Я не уверен, как hostek справляется с этим, избавляясь от neo-datasource.xml. Я полагаю, что вы будете создавать или редактировать источники данных из панели управления hostek. Я не помню, есть ли возможность ввести строку подключения при редактировании DSN, но если для этого есть поле, вы можете добавить туда tinyInt1isBit=false, и это должно решить вашу проблему.

...