使用 Laravel 迁移创建外键时 MySQL 错误

2024-01-11

我已经设置了 Laravel 应用程序并且正在使用Sentry 2 https://cartalyst.com/manual/sentry用于用户身份验证。我有一个模型叫Post与默认哨兵一起User桌子。我想让一个用户拥有很多帖子,并且一个帖子属于一个用户。为了在我的数据库模式中反映这一点,我需要在之间创建外键约束posts and users.

我写的迁移如下:

public function up()
{
    Schema::table('posts', function(Blueprint $table)
    {
        $table->integer('user_id')->after('id')->nullable();
        $table->foreign('user_id')->references('id')->on('users');
    });
}

运行后php artisan migrate,我在命令提示符中收到 MySQL 错误:

[照亮\数据库\QueryException]
SQLSTATE[HY000]:一般错误: 1005 无法创建表 'blog.dev.#sql-3bb_2d' (errno: 150) (SQL: 改变表posts添加约束 posts_user_id_foreign 外键(user_id) 参考users (id))

起初我以为发生这个错误是因为主键列users与我的外键列的定义不同user_id,但是它们都被定义为int(10).

从谷歌我了解到这个错误可能是由于两个列定义不同引起的,但是这里的情况似乎并非如此。


外键应该已经在数据库中,因此我建议采取两个步骤。我还建议制作专栏user_id未签名:

public function up()
{
    Schema::table('posts', function(Blueprint $table)
    {
        $table->integer('user_id')->after('id')->nullable()->unsigned();
    });

    Schema::table('posts', function(Blueprint $table)
    {
        $table->foreign('user_id')->references('id')->on('users');
    });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Laravel 迁移创建外键时 MySQL 错误 的相关文章

随机推荐

  • Shapely 中两个几何体最近点的坐标

    有一条折线 其顶点坐标列表 x1 y1 x2 y2 x3 y3 和一个点 x y 在身材匀称中 geometry1 distance geometry2 返回两个几何图形之间的最短距离 gt gt gt from shapely geome
  • 将数据从 Excel 复制到记事本

    我使用以下命令将数据从 Excel 复制到记事本SendKeysExcel VBA 函数 我希望避免使用 sendkeys 我有这个代码 sub test dim wb as Workbook set wb C Documents test
  • 如何从 NSURLProtocol 内部获取请求 UIWebView

    我的应用程序使用 NSURLProtocol 的子类 应用程序中有多个 UIWebView 对于 NSURLProtocol 中实现的特定算法 我需要知道哪一个 UIWebView 发送请求 我的理解是 self client 返回的对象应
  • Shell 脚本 - Shell 变量不保留值

    bin bash while true do if eq 0 then result operand1 operand2 result operand1 operand2 result operand1 operand2 if result
  • 将列表元素追加到python中的列表列表中

    给出以下列表 list1 1 2 3 4 5 6 7 8 list2 10 11 12 13 最好的改变方式是什么list1所以它变成了Python中的以下列表 1 2 10 3 4 11 5 6 12 7 8 13 您可以使用zip x
  • anorm joda-time - 本地日期时间支持

    与 Anorm 2 5 2 SQL s insert into user name registered date values name registered date on name gt user name registered da
  • Hibernate Search - 如何默认列出所有记录

    我正在使用 Hibernate 搜索 我的 jsp 页面中有一个搜索文本框 如果我输入一些文本 它会返回正确的结果 但是 如果我留空消息并单击搜索按钮 它不会返回任何记录 Code Session session HibernateUtil
  • 将 COALESCE 与 Group by 结合使用

    我有一个表 其中包含如下数据 pid category name subcategoryname 424 Bathing Infant Care Baby Lotion 428 Bathing Infant Care Baby Lotion
  • QtWidgets.QFileDialog.getOpenFileName 返回一个元组

    我最近更新到了 Qt5 for Python 的新版本 在此过程中 我不得不根据发生的一些显着变化来更改我的代码 我想深入了解我创建的这行代码 这感觉像是一种肮脏的方式来解决获得一个问题的问题string代替tuple从函数 注意 0 在该
  • 嵌套 JSON:如何向对象添加(推送)新项目?

    我刚刚从数组 对象和 JSON 开始 所以希望我在这里忽略了一些简单的东西 我在尝试时遇到错误添加 推送 我的 json 对象中的一个新项目 我遇到以下错误 Result of expression library push undefin
  • 如何更改模式视图 iOS 6 上的状态栏

    我有以下星座 主视图 自定义 UIViewController 无导航控制器或导航栏 包含一个按钮 该按钮以模态方式连接到第二个表视图控制器 该控制器嵌入在导航控制器中 MainView gt 导航控制器 gt TableView 在 Ma
  • 生成后如何在expect shell脚本中获取子进程pid

    脚本的一部分a exp usr bin expect spawn ssh qTfnN D port user host expect assword 我怎样才能得到pid子进程 ssh 如果我在 bash shell 中执行这些 而不是在脚
  • 如何告诉 pyximport 使用 cython --cplus 选项?

    pyximport 非常方便 但我不知道如何让它使用 Cython 的 C 语言选项 从命令行运行cython cplus foo pyx 如何使用 pyximport 实现等效功能 谢谢 让 Cython 创建 C 文件的一种方法是使用
  • Javascript 对引用与值定义的变量的混淆

    我了解 javascript 语言的以下属性 var bar 1 var foo bar bar something entirely different foo is still 1 然而 当尝试将此逻辑应用于对象时 它的行为似乎有所不同
  • C 中变量的作用域与生命周期

    有人可以准确解释 C 中变量的范围和生命周期的概念吗 在 C 中是否有所不同 我对范围和生活感到困惑 变量的 范围 是源代码的一个区域 您可以在其中引用该变量 生命周期 是程序执行期间存在的时间 默认情况下 局部变量的生命周期与其作用域相同
  • 如何在 Twig 中调用“time_diff”过滤器

    我怎样才能调用 时间差 Twig 中的函数 The code post created at time diff Output The filter time diff does not exist 如果您使用 Symfony 2 并想使用
  • 即使提供访问令牌后,Google 选择器仍要求登录

    首先 经过一些研究 我发现很多人都遇到过这个问题 但我没有找到任何具体的解决方案 说到这个问题 客观的 我想将谷歌驱动器与我的应用程序集成 以便用户可以从我的应用程序将文件上传到他们的驱动器 因此 用户首先必须将其驱动器与应用程序集成 然后
  • 循环并将对象推入数组

    HTML div class row div class col xs 5 stateName Kuala Lumpur div div class col xs 7 div div
  • 序列化OrientDB RecordID时无限递归

    在我的架构中 我有一个像这样的抽象类 JsonAutoDetect JsonMethod NONE public abstract class AbstractEntity Id private Object id Version priv
  • 使用 Laravel 迁移创建外键时 MySQL 错误

    我已经设置了 Laravel 应用程序并且正在使用Sentry 2 https cartalyst com manual sentry用于用户身份验证 我有一个模型叫Post与默认哨兵一起User桌子 我想让一个用户拥有很多帖子 并且一个帖