我的桌子' 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();
});
}
我收到以下错误:
[照亮\数据库\ QueryException] SQLSTATE [42000]:语法错误或访问冲突:1075表def不正确 从头;只能有一个自动列,必须将其定义为键 (SQL:ALTER TABLE sales_order_details CHANGE id id INT UNSIGNED AUTO_INCREM ENT NOT NULL)
[学说\ DBAL \驱动\ PDOException] SQLSTATE [42000]:语法错误或访问冲突:1075表def不正确 从头;只能有一个自动列,必须将其定义为键
[PDOException] SQLSTATE [42000]:语法错误或访问冲突:1075表def不正确 从头;只能有一个自动列,必须将其定义为键
如何正确进行迁移?我使用的是5.4版本
答案 0 :(得分:3)
您可以尝试这样
public function up()
{
DB::statement("ALTER TABLE sales_order_details MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT");
}
public function down()
{
DB::statement("ALTER TABLE sales_order_details MODIFY id INT NOT NULL");
DB::statement("ALTER TABLE sales_order_details DROP PRIMARY KEY");
DB::statement("ALTER TABLE sales_order_details MODIFY id INT NULL");
}
这是您实现目标的方式之一,我希望这对您有所帮助