【发布时间】:2017-12-07 18:47:06
【问题描述】:
我的表“sales_order_details”的 id 字段为整数“int(10)”,默认值为 0。我需要将其更改为迁移中的主要自动增量键。
我尝试了以下方式:
public function up()
{
Schema::table('sales_order_details', function (Blueprint $table){
$table->integer('id')->default(NULL)->change();
$table->increments('id')->change();
});
}
public function down()
{
Schema::table('sales_order_details', function (Blueprint $table){
$table->dropPrimary('id')->change();
});
}
我收到以下错误:
[照亮\数据库\查询异常] SQLSTATE [42000]:语法错误或访问冲突:1075 表定义不正确 启动;只能有一个自动列,并且必须将其定义为键 (SQL: ALTER TABLE sales_order_details CHANGE id id INT UNSIGNED AUTO_INCREM ENT 非空)
[Doctrine\DBAL\Driver\PDOException] SQLSTATE [42000]:语法错误或访问冲突:1075 表定义不正确 启动;只能有一个自动列,并且必须定义为一个键
[PDO异常] SQLSTATE [42000]:语法错误或访问冲突:1075 表定义不正确 启动;只能有一个自动列,并且必须定义为一个键
如何正确进行迁移?我使用的是 5.4 版
【问题讨论】:
-
为什么要写这两行 $table->integer('id')->default(NULL)->change(); $table->increments('id')->change();增量只需要第二个。
-
default和increments一起使用不会出问题吗?
标签: php laravel database-migration laravel-migrations