常规错误:创建键约束时为1005 - Laravel

时间:2013-12-11 23:55:05

标签: php mysql laravel laravel-4

尝试在Laravel中添加外键约束时,我收到以下错误。

[PDOException]                                                                                
SQLSTATE[HY000]: General error: 1005 Can't create table 'ts.#sql-5769_62' (errno: 150)

我有2个表,usersteams。关系是团队可以有很多用户,用户有一个团队。

用户

$table->increments('id');
        $table->integer('team_id');

        $table->string('name', 255);
        $table->string('username', 32)->unique();
        $table->string('email', 320);
        $table->string('password', 64);

        $table->foreign('team_id')->references('id')->on('teams');


        $table->timestamps();

        $table->increments('id');

        $table->string('team_name', 255);
        $table->string('website', 255);

        $table->timestamps();

我做错了什么?这也是我第一次使用迁移,所以欢迎任何指出愚蠢错误的帮助。

1 个答案:

答案 0 :(得分:9)

尝试为unsigned指定team_id

$table->integer('team_id')->unsigned();

您的主键$table->increments('id');是无符号整数,因此外键$table->integer('team_id');应与其类型匹配。

引自Laravel docs

  

注意:创建引用递增的外键时   整数,记得始终使外键列无符号。

更新

还要确保首先创建team表,因此“架构”构建器不会尝试在非现有表上创建外键。