问题描述
版本:
- 带有 PDO 的 Firebird 3.0
- Laravel 7
我正在使用 Eloquent 并且我正在使用包连接数据库 https://packagist.org/packages/harrygulliford/laravel-firebird。
OBS:在 Windows Serve 中运行良好,但在 Linux 中不行(在 CentOS 7 和 Ubuntu Server 20.04LTS 中)。
我正在将 Laravel 与 Firebird 一起使用,但我遇到了返回错误值的 NUMERIC 类型字段的问题。
示例: 应该返回 190,65 的查询返回 0.0001。
这是 sql DDL:
Item::selectRaw("CODIGO,DESCRICAO,PRECOVAREJO,PRECOATACADO,PRECOESPECIAL")->get();
这是json的返回:
{ "data": [ { "CODIGO": "123456","DESCRICAO": "DESCRIPTION EXAMPLE","PRECOVAREJO": "0.0001","PRECOATACADO": "0.0001","PRECOESPECIAL": "0.0001" } ] }
创建表:
CREATE TABLE ITENS ( PRECOVAREJO NUMERIC(15,3),PRECOATACADO NUMERIC(15,PRECOESPECIAL NUMERIC(15,CODIGO VARCHAR(8) NOT NULL,DESCRICAO VARCHAR(80) );
@H_404_36@
@Mark Rotteveel 这是 Eloquent Laravel 构建的查询:
array:2 [ 0 => array:3 [ "query" => "select count(*) as "aggregate" from "ITENS" where "ITENS"."DATACANCELAMENTO" is null" "bindings" => [ ] "time" => 33.17 ] 1 => array:3 [ "query" => """select CODIGO,PRECOESPECIAL from "ITENS" where "ITENS"."DATACANCELAMENTO" is null order by " CODIGO" asc 只获取前 10 行 """ "bindings" => [] "time" => 8.39 ] ]
这是预期的回报 Image return expected
解决方法
我通过将 PHP 版本更新到 7.4.16 版本解决了这个问题。 问题在7.4.0版本解决
我还在 /etc/php.d/30-pdo_firebird.ini 中创建了一个文件,内容为:extension = pdo_firebird。
https://www.php.net/ChangeLog-7.php#7.4.0 解决错误 https://bugs.php.net/bug.php?id=65690
感谢所有帮助过的人