0

我正在使用 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、unsignedInteger 和 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类型,那为什么要添加它?

4

1 回答 1

1

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

public function integer($column, $autoIncrement = false, $unsigned = false)
于 2020-08-10T10:15:15.697 回答