Doctorine/Dbal - 更新表迁移,在整数(不是增量)上添加不需要的"Auto Increment"



我使用的是Laravel 6.6.0和Doctrine/Dbal 2.10。

我需要更新一个迁移,并遵循了文档中的信息。

我有一个小的无符号非自动递增整数,需要将其更改为整数

我实际上希望它是mediumint,但我从Laravel文档中了解到这是不受支持的。

只有以下列类型可以是"更改":bigInteger,binary,boolean,date,dateTime,dateTimeTz,decimal,integer,json,longText,mediumText,smallInteger,string,text,time,unsignedBigInteger,unsigneddInteger和unsignedSmallInteger。我的初始迁移如下:

...
$table->bigIncrements('id');
$table->smallInteger('membership_code')->unsigned();
$table->char('name')->nullable();
...

在安装了dbal包之后,我正在尝试以下迁移来更新membership_code列:

$table->integer('membership_code', 5)->unsigned()->change();

但是当我运行migrate命令时,我会得到以下内容:

Syntax error or access violation: 1075 Incorrect table definition; there can be only one auto column and it must be defined as a key (SQL: ALTER TABLE member_centres CHANGE membership_code membership_code INT UNSIGNED AUTO_INCREMENT NOT NULL

我不明白为什么要在迁移中添加AUTO_INCREMENT

我没有把它作为increments类型,那么它为什么要添加它呢?

integer的第二个参数不是大小,它是一个布尔值,用于判断是否应该是自动增量字段。

public function integer($column, $autoIncrement = false, $unsigned = false)

相关内容

  • 没有找到相关文章