Doctorine/Dbal - Обновление миграции таблицы с добавлением нежелательного "Автоинкремента" на целое число (не на приращения)

Я использую 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 типа, так зачем он это добавляет?

1 ответ

Решение

Второй аргумент integer не размер, это логическое значение, должно ли оно быть полем автоинкремента или нет.

public function integer($column, $autoIncrement = false, $unsigned = false)
Другие вопросы по тегам