【发布时间】:2018-02-21 12:46:28
【问题描述】:
我有一个包含复合主键的表。我想创建一个迁移,删除该主键并引入一个新的列“id”,该列是连续的,将成为新的主键。
Schema::table('cart_line', function (Blueprint $table) {
$table->dropPrimary('cart_line_pkey');
$table->increments('id');
$table->primary('id');
});
此代码引发以下错误:
SQLSTATE[42P16]: Invalid table definition: 7 ERROR: multiple primary keys for table "cart_line" are not allowed (SQL: alter table "cart_line" add primary key ("id"))
如果我直接执行下面的SQL,主键被删除,上面的代码执行没有错误:
ALTER TABLE cart_line DROP CONSTRAINT cart_line_pkey;
这就是我尝试的原因
DB::statement('ALTER TABLE cart_line DROP CONSTRAINT cart_line_pkey;');
Schema::table('cart_line', function (Blueprint $table) {
$table->increments('id');
$table->primary('id');
});
但同样的错误被抛出。旧的主键不会被删除,但在尝试创建新主键之前不会出错。
我正在使用 laravel 5.5 和 postgres 9.6
【问题讨论】:
-
$table->increments('id'); 已经是主键了
标签: php laravel postgresql eloquent