Tôi vừa mới tạo một dự án Laravel 4 mới và đang tìm những điều kỳ lạ xảy ra với khía cạnh khóa ngoài của trình tạo lược đồ. Nếu tôi sử dụng phương pháp ->foreign()
trong bất kỳ di chuyển nào của tôi, tôi nhận được lỗi MySQL 150 và lỗi chung 1005. Theo tài liệu tại laravel.com/docs, hai kịch bản ở dưới cùng sẽ hoạt động? Có ai biết tại sao họ không?Các khóa ngoài trong vấn đề di trú Laravel 4
Sau đây không làm việc:
Schema::create('areas', function($table)
{
$table->engine ='InnoDB';
$table->increments('id');
$table->integer('region_id')->references('id')->on('regions');
$table->string('name', 160);
$table->timestamps();
});
Nhưng hai không làm việc:
Schema::create('areas', function($table)
{
$table->engine ='InnoDB';
$table->increments('id');
$table->foreign('region_id')->references('id')->on('regions');
$table->string('name', 160);
$table->timestamps();
});
Schema::create('areas', function($table)
{
$table->engine ='InnoDB';
$table->increments('id');
$table->integer('region_id');
$table->foreign('region_id')->references('id')->on('regions');
$table->string('name', 160);
$table->timestamps();
});
bản sao có thể có của [Di chuyển Laravel 4 ném 1072 lỗi] (http://stackoverflow.com/questions/16928032/laravel-4-migrations-throwing-1072-error) –
Câu hỏi này là về lý do tại sao 't làm việc, khác là về lỗi 1072 MySQL. – JasonMortonNZ
Chỉ cần tham gia vào Laravel và nhấn nó. Cách giải quyết của tôi là thêm các khóa ngoại bằng cách sử dụng một sự di trú riêng biệt. Nó hoạt động nhưng cảm thấy sai. – joemaller