【问题标题】:Laravel Sqlite column index out of rangeLaravel Sqlite 列索引超出范围
【发布时间】:2020-09-26 06:05:16
【问题描述】:

当使用 phpunit 运行测试时,我得到了一个不太好的异常

SQLSTATE[HY000]: General error: 25 column index out of range (SQL: select count(*) as aggregate from "attachments" where "id" = f3bad3ad-a888-41bc-b6fd-9a5998f6b527

Attachment.Id 是一个 UUID,列被定义为主键。运行测试时,我使用带有内存数据库的 SQLite。

当切换到 MySQL 时,我不再收到错误消息。我真的不知道为什么查询会导致错误。

有什么建议吗?

【问题讨论】:

    标签: laravel sqlite phpunit


    【解决方案1】:

    1) 确保在模型上设置了属性public $incrementing = false;

    2) 迁移应该是$table->uuid('id')->primary();

    3) 将以下函数添加到模型中:

    public function getKeyType()
    {
        return 'string';
    }
    

    4) 要进行诊断,请创建 database.sqlite 并允许测试在该数据库上运行。诊断 ID 列的大小。它是否适合 UUID 字符串?如果它实际上没有,您可能需要更新您的 Laravel 应用程序或编辑您的迁移,因此如果它在 Sqlite 上运行,它将创建一个具有适当长度的字符串列。

    【讨论】:

    • 嗨,我创建了 SQLite 数据库并在其上运行查询,工作正常。所以我不知道为什么它在运行 phpunit 时不起作用。见sqlite db
    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2020-03-17
    • 2018-12-16
    • 2014-08-25
    相关资源
    最近更新 更多