Ошибка внешнего ключа в миграции laravel 5.1

1

Я переношу этот код

 public function up()
{
    Schema::create('TechnicianGroup', function(Blueprint $table){
        $table->increments('id')->unsigned();
        $table->string('name', 255);
        $table->string('description', 64);
        $table->string('token', 255);
        $table->timestamps();
    });
    Schema::create('Site', function(Blueprint $table){
        $table->increments('id');
        $table->string('name', 255);
        $table->string('token', 255);
        $table->timestamps();
    });
    Schema::create('technician', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name', 50);
        $table->string('username', 50);
        $table->string('password', 255);
        $table->string('email', 255);
        $table->string('mobile', 11);
        $table->string('avatar_url', 256);
        $table->string('job_title', 100);
        $table->integer('site_id');
        $table->foreign('site_id')->references('id')->on('site')->onDelete('cascade');
        $table->integer('group_id');
        $table->boolean('is_active');
        $table->string('token', 255);
        $table->timestamps();
    });

}

Когда я вычищаю малярию

php artisan migrate

В результате

[Illuminate\Database\QueryException] SQLSTATE [HY000]: Общая ошибка: 1005 Невозможно создать таблицу вверх. # Sql-a3c_140 '(errno: 150) (SQL: alter table technician добавить ограничение technician_site_id_foreign external key (site_id) referen ces site (id)) [PDOException] SQLSTATE [HY000]: Общая ошибка: 1005 Не удается создать таблицу "вверх". sql-a3c_140 (errno: 150)

Теги:
foreign-keys
laravel-5.1
mysql-error-1064

1 ответ

1
Лучший ответ

Вы забыли использовать unsigned(). Если вы не используете unsinged(), столбец будет int(11), но вам нужно int(10).

site.id и technician.site_id должны быть одного типа: int (10)

Попробуй это:

$table->foreign('site_id')->unsigned()->references('id')->on('site')->onDelete('cascade');
  • 0
    Спасибо, попробуйте этот код, но не работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню