我有9个表,当我运行命令时:
php artisan migrate
仅在我的数据库中创建用户表,迁移表和password_reset表。这是我的示例代码
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAlatsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('alats', function (Blueprint $table) {
$table->increments('id');
$table->integer('merk_id')->unsigned();
$table->integer('kategori_id')->unsigned();
$table->integer('operator_id')->unsigned();
$table->string('nama');
$table->string('no_plat',15);
$table->date('tahun');
$table->string('volume',20);
$table->text('keterangan');
$table->enum('status',['ada','disewa','servis']);
// $table->timestamp('created_at');
// $table->timestamp('updated_at');
$table->timestamps();
$table->foreign('merk_id')->references('id')->on('merks')->onDelete('CASCADE');
$table->foreign('kategori_id')->references('id')->on('kategoris')->onDelete('CASCADE');
$table->foreign('operator_id')->references('id')->on('operators')->onDelete('CASCADE');
});
}
public function down()
{
Schema::dropIfExists('alats');
}
}
请帮帮我..?
答案 0 :(得分:2)
需要按正确的顺序迁移迁移文件。您无法使用不存在的外键迁移表。
您可能在某些迁移中有一个外键,并且该ID的ID将在稍后的迁移文件中出现。这就是你得到这个错误的原因。
检查您的迁移文件,并注意它们的创建顺序。
例如,如果您有外键alats_merk_id_foreign
,则必须先迁移包含alats_merk_id
的迁移文件。希望这对你有所帮助。
答案 1 :(得分:1)
Schema::create('alats', function (Blueprint $table) {
$table->increments('id');
$table->integer('merk_id')->unsigned();
});
Schema::table('alats', function(Blueprint $table)
{
$table->foreign('merk_id')
->references('merk_id')->on('merk_id_table_name')
->onDelete('cascade');
});
首先只创建表然后创建外键。 并确保首先迁移merk_id_table。
答案 2 :(得分:1)
如果你在所有答案中都做了所有事情
我认为您的问题来自外国/主要键类型和长度
因此您可以将id作为整数及其对应的外键创建为具有不同长度的整数,或者甚至将其作为字符串的其他类型创建为例如
所以尝试使用无符号和相同长度的整数
尝试使用->unsigned()->length(10)...
使pimary键及其对应的外键具有相同的确切类型和长度
答案 3 :(得分:1)
尝试这样做:
Schema::disableForeignKeyConstraints();
Schema::create('alats', function (Blueprint $table) {
$table->increments('id');
$table->integer('merk_id')->unsigned();
$table->integer('kategori_id')->unsigned();
$table->integer('operator_id')->unsigned();
$table->string('nama');
$table->string('no_plat',15);
$table->date('tahun');
$table->string('volume',20);
$table->text('keterangan');
$table->enum('status',['ada','disewa','servis']);
// $table->timestamp('created_at');
// $table->timestamp('updated_at');
$table->timestamps();
$table->foreign('merk_id')->references('id')->on('merks')->onDelete('CASCADE');
$table->foreign('kategori_id')->references('id')->on('kategoris')->onDelete('CASCADE');
$table->foreign('operator_id')->references('id')->on('operators')->onDelete('CASCADE');
});
Schema::enableForeignKeyConstraints();
您需要为每次迁移复制上述内容。