【发布时间】:2016-06-16 09:43:16
【问题描述】:
我的迁移有以下架构:
Schema::create('client', function(Blueprint $table)
{
$table->increments('id');
$table->string('nbr', 10)->nullable()->default(null);
$table->string('name', 100);
$table->string('search', 100);
$table->string('image', 100)->nullable()->default(null);
}
我正在尝试将字符串“nbr”更改为自动增量。我尝试了几种解决方案,但没有一个有效。我尝试了以下方法:
Schema::table('client', function(Blueprint $table)
{
// $table->increments('nbr')->change();
//$table->dropPrimary('nbr');
DB::statement('ALTER TABLE client ALTER COLUMN nbr TYPE Integer NOT NULL AUTO_INCREMENT;');
});
注意:我正在使用 postgresql
【问题讨论】:
-
您是否尝试过使用
$table->dropColumn('nbr');而不是简单地使用$table->increment('nbr'); -
@AfikDeri 我试过了,但我得到“不允许表的多个主键”错误
-
我认为
$table->increment('nbr')默认是主要的,尝试使用$table->bigIncrements('nbr')。不确定,但值得一试。 -
您需要 id 和 nbr 作为自动增量吗?这对我来说似乎是多余的,我想不出在一个表中有两个自动增量的任何用途。如果您只想将 nbr 作为自动增量,则将其设置为主键并使用唯一键作为 id。 Laravel 的模式支持多个 RDBMS,大多数 RDBMS 不允许有两个自增列。
标签: postgresql laravel-5 database-schema