迁移laravel 5.5:无法创建除users表和password_reset表之外的表

时间:2017-10-11 05:21:36

标签: php laravel laravel-5 laravel-5.5

我有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'); } }

请帮帮我..?

4 个答案:

答案 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();

您需要为每次迁移复制上述内容。