Laravel 5.1 - 一般错误:1005无法创建表(mysql)

时间:2015-09-04 12:05:03

标签: php mysql laravel laravel-5.1

我正在使用laravel来迁移一些数据,但我收到以下消息:

function pluralService($locale) {
    this.getPlural = function(count) {
        return $locale.pluralCat(count);
    };
}

angular.module('plurals', [])
    .service('plural', ['$locale', pluralService])
    ;



beforeEach(module('plurals'));

describe('plural', function() {

    beforeEach(inject(function($injector) {
        this.plural = $injector.get('plural');
    }));

    it('should return correct plural category', function() {
        expect(this.plural.getPlural(1)).toBe('one');
        expect(this.plural.getPlural(5)).toBe('other');
    });

});

我尝试了很多东西,但没有用。

以下是迁移文件的代码。 (相关部分)。

[Illuminate\Database\QueryException]                                                                                                                                                                
  SQLSTATE[HY000]: General error: 1005 Can't create table 'heinz.#sql-1e83_8' (errno: 150) (SQL: alter table `funcionarios` add constraint funcionarios_supervisor_id_foreign foreign key (`supervis  
  or_id`) references `funcionarios` (`id`))  

4 个答案:

答案 0 :(得分:7)

所有外键必须是未签名的

    $table->integer('supervisor_id')->unsigned()->nullable();
    $table->integer('coordenador_id')->unsigned()->nullable();
    $table->integer('gerente_id')->unsigned()->nullable();
    $table->integer('diretor_id')->unsigned()->nullable();
    $table->integer('sexo_id')->unsigned()->nullable();
    $table->integer('setor_id')->unsigned()->nullable();
    $table->integer('cargo_id')->unsigned();
    $table->integer('turno_id')->unsigned()->nullable();

(来源:http://laravel.com/docs/4.2/schema#foreign-keys

答案 1 :(得分:3)

如果没有看到您的表结构,可以从下面的查询中找到

chmod u+rxid都不匹配数据类型和大小。确保此列

的数据类型和大小都相同

此外,检查是否已存在名称为supervisor_id的任何其他约束。如果是,请尝试为约束提供不同的名称。

funcionarios_supervisor_id_foreign

答案 2 :(得分:1)

当代码中的主键引用错误时,您会收到error code 1005。以下是调试代码的方法:

  1. 确保您所指的FK确实存在。
  2. 确保您没有拼写错误。案件也一样。
  3. FK链接的字段必须与定义完全匹配。

答案 3 :(得分:0)

首先需要检查迁移文件的执行顺序。引用表迁移应该在完整性约束中引用之前完成。