【问题标题】:Laravel migrations won't apply on MySQL (InnoDB)Laravel 迁移不适用于 MySQL (InnoDB)
【发布时间】:2021-09-05 12:40:58
【问题描述】:

大家好,

这是我第一次发帖!

在我的新 Web 服务器上应用 laravel 8 迁移时遇到问题。 在尝试部署我的项目时,我无法应用迁移,我不确定为什么。

错误图片和我的迁移下方,我使用的是php artisan migrate --seed 命令

迁移时输出的消息:

我的外键迁移:

问题似乎与外键约束有关,但可能是因为其他原因。我的服务器在 InnoDB 上运行 MySQL,所以我怀疑存在兼容性问题,但我仍然不知道如何解决它。

我试过了:

  • 逐一应用迁移,以便约束引用已经存在的外键。没用
  • 在 config/database.php 中将我的引擎更改为 InnoDB。没用
  • 使用命令行手动导入我的数据库。没用
  • 将 DB_EN​​GINE = 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


【解决方案1】:

问题实际上是我编写迁移的方式,如果其他人有这个问题,你可以在这里找到一个好的遮阳篷:laravel-8-foreign-key

感谢@brombeer 帮助我!

【讨论】:

    猜你喜欢
    • 2021-06-11
    • 2021-10-13
    • 2018-10-12
    • 2017-06-05
    • 2011-06-17
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    相关资源
    最近更新 更多