Вы столкнулись с проблемой синхронизации схемы базы данных и маппинга Doctrine, так как добавили последовательное значение для столбца `internal_id` через миграцию, но не указали это в настройках ORM.
Когда вы добавляете столбец в базу данных, идентифицируя его как `bigint` или `serial` в миграции, вы должны обязательно указать в вашем классе сущности правильное значение по умолчанию и его свойства.
### Решение 1: Правильная настройка поля
Для того, чтобы избежать конфликта с ORM Doctrine, обеспечьте правильное определение вашего столбца в сущности. Если вы хотите, чтобы `internalId` автоматически заполнялся значениями последовательности, вам нужно настроить его соответствующим образом, используя Doctrine:
```php
#[ORM\Column(type: 'integer', nullable: true, options: ["default" => "nextval('amqp_auth_user_internal_id_seq')"])]
private ?int $internalId = null;
```
Убедитесь, что у вас стоит `nullable: true`, если вы хотите разрешить значения `null`. Не забудьте сделать поле типа `?int` для обработки `null` значений.
### Решение 2: Используйте последовательности
Если у вас уже есть последовательность, вы можете использовать его в вашем SQL-коде, как в вашем примере. Подход с использованием `serial` в `columnDefinition` также должен работать, но необходимо убедиться, что данные правильно отрабатываются.
Пример настройки:
```php
#[ORM\Column(type: 'integer', options: ['default' => 'nextval(\'amqp_auth_user_internal_id_seq\')'], nullable: true)]
private ?int $internalId = null;
```
### Подход с сериализацией
Использование `serial` в `columnDefinition` — это еще один вариант, но он зависит от того, как вы планируете управлять миграциями. Если вы используете `serial`, вы можете не указывать `nextval`, так как это встроенная функциональность PostgreSQL:
```php
#[ORM\Column(type: 'integer', nullable: true, columnDefinition: 'serial')]
private ?int $internalId = null;
```
### Вывод
Чтобы избежать проблем с синхронизацией между вашей базой данных и маппингом Doctrine, убедитесь, что свойства поля описаны верно и что значения по умолчанию совпадают с тем, что было установлено на уровне базы данных. После этого ваши команды Doctrine должны проходить без конфликтов.
Если вы будете продолжать испытывать проблемы, возможно, стоит выполнить `doctrine:schema:update` для полного обновления схемы, но помните, что лучше всего следовать своим миграциям, чтобы обработать все изменения в архитектуре базы данных.