【问题标题】:Fields of type numeric return wrong value数字类型的字段返回错误值
【发布时间】:2021-03-12 18:07:18
【问题描述】:

版本:

  • 带有 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,3), PRECOESPECIAL NUMERIC(15,3), CODIGO VARCHAR(8) NOT NULL, DESCRICAO VARCHAR(80) );

@马克·罗特维尔 这是 Eloquent Laravel 构建的查询:

array:2 [ 0 => array:3 [ "query" => "select count(*) as "aggregate" from "ITENS" 其中 "ITENS"."DATACANCELAMENTO" 为空" "bindings" => [ ] "time" => 33.17 ] 1 => array:3 [ "query" => """select CODIGO、DESCRICAO、PRECOVAREJO、PRECOATACADO、PECOESPECIAL from "ITENS",其中 "ITENS"."DATACANCELAMENTO" 为 null order by " CODIGO" asc 仅获取前 10 行 """ "bindings" => [] "time" => 8.39 ] ]

这是预期的回报 Image return expected

【问题讨论】:

  • 请提供minimal reproducible example。如果没有实际的 DDL、示例数据以及产生错误结果的查询或代码,您的屏幕截图将无济于事。
  • 请包含示例数据,如果可能,请包含 Laravel 生成的实际查询。
  • 您可以在 Firebird 2.5 或更新版本上使用 TraceAPI 来查看真正的查询。 IBExpert 或免费的FBProfiler.sf.net,也许还有许多其他的 GUI 工具可以使用 TraceAPI 并为您记录 SQL 语句
  • @JosiasFonseca 如果您没有使用我要求的详细信息更新您的问题,通知我有什么意义?
  • 我更新了由 Eloquent 构建的查询并返回预期的数据库

标签: laravel firebird


【解决方案1】:

我通过将 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

感谢所有帮助过的人

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多