【发布时间】:2021-09-05 12:40:58
【问题描述】:
大家好,
这是我第一次发帖!
在我的新 Web 服务器上应用 laravel 8 迁移时遇到问题。 在尝试部署我的项目时,我无法应用迁移,我不确定为什么。
在错误图片和我的迁移下方,我使用的是php artisan migrate --seed 命令
迁移时输出的消息:
我的外键迁移:
问题似乎与外键约束有关,但可能是因为其他原因。我的服务器在 InnoDB 上运行 MySQL,所以我怀疑存在兼容性问题,但我仍然不知道如何解决它。
我试过了:
- 逐一应用迁移,以便约束引用已经存在的外键。没用
- 在 config/database.php 中将我的引擎更改为 InnoDB。没用
- 使用命令行手动导入我的数据库。没用
- 将 DB_ENGINE = InnoDB 添加到 .env 文件。没用
- 从
$table->foreign('idUser')->references('id')->on('users');切换
到$table->foreignId('idUser')->nullable->constrained();
我的服务器
- Centos 7
- MySQL - InnoDB
- PHP 7.4
- 有Cpanel
另外,我在本地主机上应用迁移没有问题,这让我相信这不是迁移结构的问题...
我的想法不多了,似乎无法在互联网上找到一个好的遮阳篷。有人能帮我吗 ?如果我忘记提供重要信息,请告诉我
【问题讨论】:
-
看起来您正在引用一个尚不存在的表。还要确保外键及其引用的列类型相同(无符号、大整数、可为空等)
-
正如我所说,我已经尝试以正确的顺序应用迁移。这不可能是问题...
-
检查父表的主键长度和类型是否与本次迁移一致。
-
@FaizanAli 我尝试使用 $table->foreignId('idUser')->constrained() 方法,该方法应该可以防止此类问题,但不幸的是结果相同
-
idRoles在您的迁移中出现在哪里?您发布的文件似乎与错误无关!?
标签: php mysql laravel centos innodb