【问题标题】:Laravel 7.x: PDOException: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type bigintLaravel 7.x:PDOException:SQLSTATE [22P02]:无效的文本表示:7 错误:bigint 类型的输入语法无效
【发布时间】:2020-10-01 11:12:28
【问题描述】:

我正在使用 laravel,有时将非常大的数字与 postgres 结合使用。在有问题的情况下,我试图将数据存储在此表中。

        Schema::create('address_statistics', function (Blueprint $table) {
            $table->id();
            $table->string('address')->nullable()->index();
            $table->bigInteger('transaction_count');
            $table->bigInteger('balance');
            $table->dateTime('first_transaction');
            $table->dateTime('last_transaction');
        });

示例(伪代码):


$testnumber = "13159750.11391604"; //comes from an API as string
$this->addressStatistic->balance = floatval($response["result"]["amount"]) * 100000000;
$this->addressStatistic->save();

在这种情况下,我收到一个错误:

PDOException: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type bigint: "1.3159750113916E+15"

有什么办法可以解决吗?

【问题讨论】:

  • 不确定 Postgresql。但试试这个。您的 DB 列 balance 具有数据类型 bigInteger 并且您正在尝试向该列插入科学记数法(floatval($response["result"]["amount"]) * 100000000 创建科学记数法)。将数据类型转换为 FLOATDOUBLE check here 或使用数字文字而不是科学记数法。

标签: laravel postgresql bigint


【解决方案1】:

在插入数据库之前,我使用 inval() 显式解析了数字。现在它按预期工作了!

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2019-03-27
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多