Laravel 8 迁移“一般错误:1215 无法添加外键约束”

2024-03-22

我正在尝试在 Laravel 8 上创建迁移,这是我的表

class CreateProductVariationOrderTable extends Migration {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('product_variation_order', function (Blueprint $table) {
            $table->integer('order_id')->unsigned()->index();
            $table->integer('product_variation_id')->unsigned()->index();
            $table->integer('quantity')->unsigned();
            $table->timestamps();

            $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade');
            $table->foreign('product_variation_id')->references('id')->on('product_variations')->onDelete('cascade');
        });
    }
    public function down()
    {
        Schema::dropIfExists('product_variation_order');
    }
}

当我跑步时php artisan migrate我收到这一块错误:SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table 产品变体订单add constraint产品变体订单订单 ID 外国 foreign key (order_id) references orders (id) on delete cascade)

⚠️编辑:这是我的product_variation迁移文件。

class CreateProductVariationsTable extends Migration {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('product_variations', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('product_id')->unsigned()->index();
            $table->string('name');
            $table->integer('price')->nullable();
            $table->integer('order')->nullable();
            $table->timestamps();

            $table->foreign('product_id')->references('id')->on('products');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('product_variations');
    }
}

外键必须与引用键类型相同。

在您的订单表中,您将 id 定义为bigIncrements()这是无符号大整数。

在您的product_variation_order 表中,您将order_id 定义为无符号整数。

所以这两个键不匹配。一般来说,您应该使用大整数,因为它允许您的数据库变得更大,并且整数和大整数之间的空间差异并不显着。

所以改变order_id作为无符号大整数。

$table->unsignedBigInteger('order_id')->nullable();

另外为了一致性,所有键都应该是bigIncrements() or unsignedBigInteger(),这会让你以后不再头疼。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 8 迁移“一般错误:1215 无法添加外键约束” 的相关文章

  • 使用操作系统用户名/密码在 PHP 中进行身份验证?

    我想知道是否有一种方法可以使用 PHP 或者可能是其他一些 CGI 但最好是 PHP 来使用其操作系统 在本例中为 Linux Debian 5 用户名和密码来验证用户 可能的 难的 谢谢 一般来说 这种东西是特定于操作系统的 并与现有的身
  • PHP DateTime::修改加减月份

    我一直在与DateTime class http www php net manual en class datetime php最近在添加月份时遇到了我认为是一个错误 经过一番研究后 看来这不是一个错误 而是按预期工作 根据查到的文档he
  • 创建动态子域

    自从我考虑一些网站正在实施的此功能以来已经有一段时间了 它看起来非常成功 类似的网站tumblr com blogger com wordpress com允许用户使用简单的 HTML PHP 表单从网站内注册新的子域名 以我目前对 PHP
  • 如何使用 zend 导入 CSV

    如何使用 zend 框架导入 CSV 文件 我应该使用 zend file transfer 还是有任何我必须研究的特殊类 另外 如果我使用 zend file transfer 是否有任何特殊的 CSV 验证器 你不必使用任何 zend
  • PHP 将页面生成的标题放入

    我们在网站的所有页面中包含一个 header php 文件 因此 我们可以在 header php 文件中放置一个标题 该标题将应用于整个站点 或者在每个页面中添加一个自定义标题以更具描述性 问题是 这样做时 标题将位于 head 标签之外
  • 如何让 PagerDefault 查询与 Drupal 7 一起正常工作?

    我正在运行以下代码 query db select taxonomy index ti gt fields ti array nid gt condition ti tid term gt tid gt condition n status
  • $_COOKIE[] 设置后似乎没有反映更改

    我不记得过去使用 Cookie 时遇到过很多问题 但我在尝试时遇到了一些意想不到的结果 我在本地主机上运行 因此我的域设置 这将产生以下输出 Cookie Set Cookie equals 457718770 shou
  • php 验证整数[重复]

    这个问题在这里已经有答案了 我想知道为什么这不起作用 echo gettype GET id returns string if is int GET id echo Integer 如何验证从 GET POST 传递的数据是否为整数 Ca
  • 如何重定向(标头位置)到 html 文件?

    所以我正在 php 中运行一个注册 登录系统 包括 MySQL 出于测试目的 成功登录后 我将用户重定向到 index php 该文件声明用户已登录 并为他提供注销选项 同时 我制作了一个计划使用的实际 html 页面 因此我只是添加了 i
  • htaccess隐藏php扩展时出错,只隐藏html

    我在使用 htaccess 隐藏网站上的 php 扩展时遇到问题 我看到很多网站试图修复它 但没有任何结果 但只有 html 扩展名对我来说是隐藏的 在我的 htaccess 上 我用这个来隐藏扩展 它就在错误页面之后 这是我的 htacc
  • 使用 php 和 sendmail 发送有关测试 docker 容器的电子邮件

    我用的是ubuntu 16 04 我有一个 测试 docker docker compose 容器运行 php 5 6 和 apache 2 4 在生产平台 没有docker 上 邮件是通过sendmail发送的 如何在docker容器上发
  • Zend 框架 PDF 问题

    又是我 伙计们 我有一个小问题 Create new PDF pdf new Zend Pdf Add new page to the document page pdf gt newPage Zend Pdf Page SIZE A4 p
  • PDO::PARAM_FLOAT 不存在,为什么?

    我想知道为什么 PDO PARAM FLOAT 不存在以及什么可以替代它 没有 可能是由于隐含的舍入问题 只需使用PDO PARAM STR并使用将浮点数转换为字符串strval float or string float
  • 如何使用 PHP 中的 jQuery/AJAX 调用迭代 JSON 数组? [复制]

    这个问题在这里已经有答案了 可能的重复 循环Json对象 https stackoverflow com questions 684672 loop through json object 我有一个 PHP 函数 data php 它从外部
  • 如何找到 httpd.conf 文件所在的位置?

    如何找到 apache PHP 上 httpd conf 文件的路径 我不知道我的脚本是否会在Windows apache或Linux中运行 我需要知道在哪里可以找到这个文件 以便从那里找到参数 谢谢 我认为它没有接触 PHP 跑步http
  • 下载表格 - 选择文件合并到 Zip 中

    我希望创建一个表单 用户可以从手册列表中进行选择 总共10个 他们可能只想下载 3 份小册子 或 6 份 或 1 份 或 9 份小册子 但想法是他们选择所需的小册子 然后用脚本组合一个包含所需小册子的 zip 文件 任何人都可以提出任何建议
  • 创建具有动态更新变量的数组

    我有一些 PHP 变量 它们的名称直接链接到它们包含的函数 是否有办法自动创建这些变量 以便我可以使用所有变量 00 200 这就是我现在正在做的事情 regdays00 is user reg matured 00 regdays02 i
  • cakephp 3.0 如何使用值而不是 id 填充选择字段

    我一直在寻找以前的答案 但我找到的答案与旧的 cakephp 版本有关 我有两个表 杂志 和 问题 其中存在关系 问题 属于 杂志 问题表如下所示 public function initialize array config this g
  • PHP + FTP删除文件夹中的文件

    我刚刚编写了一个 PHP 脚本 它应该连接到 FTP 并删除特殊文件夹中的所有文件 它看起来像这样 但我不知道需要什么命令来删除文件夹日志中的所有文件 任何想法
  • 未加载 Firebird 扩展

    我正在尝试在 PHP 中使用 Firebird 扩展 我有扩展文件 php pdo firebird dll php interbase dll in my ext文件夹 我将它们添加到我的php ini像这样文件 PHP PDO FIRE

随机推荐