Назад | Перейти на главную страницу

Mariadb читает целые числа как строки

У меня есть локальная среда MySQL на экземпляре Ubuntu и живая среда MariaDB, работающая на экземпляре Centos 7. При выборе целочисленного поля из таблицы с использованием PHP это значение должно возвращаться как целое число, однако MariaDB возвращает это значение в виде строки.

В обеих средах выполняется один и тот же экземпляр кода с использованием Laravel Eloquent ORM, и я проверил, что каждая соответствующая база данных хранит значение как целые числа / крошечные числа и т. Д.

Используемый код:

\App\Item::where('id','=',1)->first()->key_item;

Mysql, Ubuntu:

0

MariaDB, Centos 7:

"0"

Для меня это странное поведение, и с точки зрения программирования оно вызывает ошибки при вычислении ожидаемых целых чисел в выражениях «если».

Есть ли какой-либо параметр конфигурации, который может заставить MariaDB возвращать целочисленные значения как целые типы?

После экспериментов с решениями на виртуальной машине Centos 7 я обнаружил, что решение заключалось в замене уровня подключаемого модуля PHP-MySQL в базе данных на подключаемый модуль PHP MySQL с собственным драйвером.

На самом деле эта проблема связана не с MariaDB или MySQL, а скорее с драйвером PHP. Замена MariaDB на MySQL сохранила эту проблему. Поставляемый драйвер Centos 7 для MariaDB-PHP преобразует целые числа в строки, и единственное решение на стороне базы данных - заменить драйвер.

Более подробную информацию о собственном драйвере можно найти здесь: https://dev.mysql.com/downloads/connector/php-mysqlnd/