Mariadb 将整数读取为字符串

Mariadb 将整数读取为字符串

我在 Ubuntu 实例上有一个本地 MySQL 环境,在 Centos 7 实例上运行了一个实时 MariaDB 环境。当使用 PHP 从表中选择一个整数字段时,该值应该以整数形式返回,但是,MariaDB 会将该值作为字符串返回。

两个环境都使用 Laravel Eloquent ORM 运行相同的代码实例,并且我已经检查每个相应的数据库是否将值存储为整数/小整数等。

使用的代码是:

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

Mysql,Ubuntu:

0

MariaDB,Centos 7:

"0"

对我来说,这是一种奇怪的行为,并且在编程方面,在评估“if”表达式中的预期整数时会导致错误。

是否有一些配置选项可以强制 MariaDB 将整数值作为整数类型返回?

答案1

在虚拟 Centos 7 机器上尝试解决方案后,我发现解决方案是用带有本机驱动程序的 PHP MySQL 插件替换数据库的 PHP-MySQL 插件层。

这个问题实际上与 MariaDB 或 MySQL 无关,而是与 PHP 驱动程序有关。将 MariaDB 换成 MySQL 后,这个问题仍然存在。Centos 7 附带的 MariaDB-PHP 驱动程序会将整数转换为字符串,唯一的数据库端解决方案是换出驱动程序。

关于本机驱动程序的更多信息可以在这里找到: https://dev.mysql.com/downloads/connector/php-mysqlnd/

相关内容