如何使用迁移重命名 laravel 中的列?

新手上路,请多包涵

我有如下所述的专栏:

 public function up()
{
    Schema::create('stnk', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('no_reg', 50)->unique();
        $table->string('no_bpkb', 50)->unique();
        $table->string('nama_pemilik', 100);
        $table->string('alamat');
        $table->string('merk', 50);
        $table->string('tipe', 50);
        $table->string('jenis', 50);
        $table->smallInteger('tahun_pembuatan');
        $table->smallInteger('tahun_registrasi');
        $table->smallInteger('isi_silinder');
        $table->string('no_rangka', 50);
        $table->string('no_mesin', 50);
        $table->string('warna', 50);
        $table->string('bahan_bakar', 50);
        $table->string('warna_tnkb', 50);
        $table->string('kode_lokasi', 50);
        $table->date('berlaku_sampai');
        $table->timestamps();

        $table->index('created_at');
        $table->index('updated_at');
    });

}

我已经为 stnk 表制作了播种机

现在我想将 id 重命名为 id_stnk

我在 “作曲家” 中添加了 “教义/dbal” 并执行了 composer update

我进行了迁移 php artisan migration:make rename_column

然后我向 rename_column 添加了新方法:

 Schema::table('stnk', function(Blueprint $table)
{
    $table->renameColumn('id', 'id_stnk');

});

然后我尝试运行命令 php artisan migrate 但出现如下错误:

 [Ulluminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1025 Error on rename of './my_database/#sql -447_33' to './my_database/stnk' (error: 150) (SQL: ALTER TABLE stnk CHANGE id id_stnk INT UNSIGENED AUTO_INCREMENT NOT NULL)

[PDOException]
SQLSTATE[HY000]: General error: 1025  Error on rename  of './my_database/#sql -447_33' to './my_database/stnk' (error: 150)

原文由 Ariasa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 363
1 个回答

如果您不想使用 学说/dbal 包,请使用查询数据库语句。例如:

 public function up()
{
    DB::statement('ALTER TABLE table_name CHANGE from to VARCHAR(200)');
}

public function down()
{
    DB::statement('ALTER TABLE table_name CHANGE to from VARCHAR(200)');
}

原文由 Hana Hasanah 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题