我在一个Ubuntu实例上有一个本地MySQL环境,在一个Centos 7实例上运行一个活动MariaDB环境。当使用PHP从表中选择整数字段时,这个值应该作为整数返回,但是,MariaDB以字符串的形式返回这个值。
这两个环境都在使用Laravel雄辩的ORM运行相同的代码实例,我已经检查了每个数据库,每个数据库都将值存储为整数/微型-ints等。
所用的代码是:
\App\Item::where('id','=',1)->first()->key_item;Mysql,Ubuntu:
0MariaDB,Centos 7:
"0"对我来说,这是一种奇怪的行为,在编程结束时,在计算"if“表达式中的预期整数时会导致错误。
是否有一些配置选项可以强制MariaDB将整数值返回为整数类型?
发布于 2017-05-26 22:18:19
在虚拟Centos 7计算机上试验了解决方案之后,我发现解决方案是用PHP插件替换PHP插件层,并使用本地驱动程序。
这个问题实际上不是与MariaDB或MySQL有关,而是与PHP驱动程序有关。将MariaDB替换为MySQL仍然存在这个问题。Centos 7附带的MariaDB驱动程序将把整数转换成字符串,而数据库端唯一的解决方案是交换驱动程序。
有关本机驱动程序的更多信息可以在这里找到:https://dev.mysql.com/downloads/connector/php-mysqlnd/
https://serverfault.com/questions/852379
复制相似问题