gpt4 book ai didi

php - Laravel PHPUnit 使用 SQLite 在 ALTER TABLE 上失败

转载 作者:行者123 更新时间:2023-11-29 05:58:30 26 4
gpt4 key购买 nike

我有一个在项目开始时进行的迁移,主要是添加一个名为“description”的 TEXT 列,该列设置为 NOT NULL。

几个月后我需要更改它以允许 null。

我不能使用 Laravel 5.5 change() 函数,因为我的列列表中有一个枚举并且它出错了,所以我需要像这样在迁移中将它添加为原始查询;

DB::statement('ALTER TABLE `galleries` MODIFY `description` TEXT NULL;');

当我针对我的本地 mysql 数据库执行 php artisan migrate 时,一切正常,但是当我尝试运行我的测试套件时,一切都崩溃了。

我在我的测试套件中使用 SQLite,我得到的错误如下;

PDOException: SQLSTATE[HY000]: General error: 1 near "MODIFY": syntax error

如果其他人遇到过这个问题并解决了它,我很想听听你是怎么做到的。

谢谢

最佳答案

SQLite 只允许您重命名表或添加列。 ALTER TABLE 语句不能更改或删除列。

为了在 SQLite 中更改或删除列,您需要使用所需的模式创建一个新表,将数据从原始表复制到新表,删除原始表,然后将新表重命名为原来的名字。

这都是 Laravel 和 DBAL 为您抽象出来的,所以您最好的选择可能是寻求帮助来解决您的枚举列的问题(尽管那将是一个单独的问题)。

您可以在 SQLite docs here 中阅读有关更改表格的更多信息.

关于php - Laravel PHPUnit 使用 SQLite 在 ALTER TABLE 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47196859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com