Big*_*ies 4 php mysql sqlite laravel laravel-5
我在项目开始时进行了迁移,基本上添加了一个名为“描述”的 TEXT 列,该列设置为 NOT NULL。
现在几个月后,我需要更改它以允许空值。
我不能使用 Laravel 5.5 change() 函数,因为我的列列表中有一个枚举并且它出错了,所以我需要在这样的迁移中将它添加为原始查询;
DB::statement('ALTER TABLE `galleries` MODIFY `description` TEXT NULL;');
Run Code Online (Sandbox Code Playgroud)
当我对我的本地 mysql 数据库执行 php artisan 迁移时,一切都很好,但是当我尝试运行我的测试套件时,一切都中断了。
我在我的测试套件中使用 SQLite,我得到的错误如下;
PDOException: SQLSTATE[HY000]: General error: 1 near "MODIFY": syntax error
Run Code Online (Sandbox Code Playgroud)
如果其他人遇到了这个问题并解决了它,我很想听听你是如何做到的。
谢谢
SQLite 只允许您重命名表或添加列。ALTER TABLE 语句不能更改或删除列。
为了在 SQLite 中更改或删除列,您需要创建一个具有所需架构的新表,将数据从原始表复制到新表,删除原始表,然后将新表重命名为原始名称.
这一切都是由 Laravel 和 DBAL 为您抽象出来的,因此您最好的办法可能是获得帮助以解决您的 enum 列的问题(尽管这将是一个单独的问题)。
您可以在此处的SQLite 文档中阅读有关更改表的更多信息。
| 归档时间: |
|
| 查看次数: |
2365 次 |
| 最近记录: |