Symfony 4 после генерации пользователя через make: сбой обновления схемы пользователя - PullRequest
2 голосов
/ 01 мая 2019

Я пытаюсь создать пользователя через CLI: ( symfony doc )

php bin/console make:user

Эта команда создает объект User.php, который реализует UserInterface.

Но после команды:

php bin/console doctrine:schema:update --force

Я получаю ошибки:

В строке AbstractMySQLDriver.php 79:

Исключениепроизошло при выполнении пользователя 'CREATE TABLE (id INT AUTO_INCREMENT NOT NULL, электронная почта VARCHAR (18 0) NOT NULL, роли JSON NOT NULL, пароль VARCHAR (255) NOT NULL, УНИКАЛЬНЫЙ ИНДЕКС UNIQ_8D93D649E7927C74 (emai l), ИДЕАЛЬНЫЙ)CHARACTER SET ПО УМОЛЧАНИЮ utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB ':

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка;проверьте правильность синтаксиса для использования рядом с 'JSON NOT NULL, паролем VARCHAR (255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7' в строке 1

в строке 1 *1022* *1023* *1024* в связи с PDOConnection..php строка 90:

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL есть ошибка;проверьте, соответствует ли ваша версия сервера MariaDB правильному синтаксису для использования рядом с 'JSON NOT NULL, пароль VARCHAR (255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7' в строке 1

В PDOConnection.php строка 88:

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка;проверьте правильность синтаксиса, который должен использоваться рядом с 'JSON NOT NULL, паролем VARCHAR (255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7' в строке 1

* 1037.* РЕДАКТИРОВАТЬ:

Информация о sql:

Тип сервера: MariaDB

Версия сервера: 10.1.31-MariaDB - двоичный дистрибутив mariadb.org

версия протокола: 10

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Ваш MariaDB должен быть обновлен. У вас есть поле с типом = JSON (например, роли), но оно доступно только из 10.2 + , у вас версия 10.1.


Кроме того, используемый вами метод (update + --force) не очень Symfony 4. Лучшим подходом будет:

php bin/console make:user 
php bin/console make:migration
php bin/console doctrine:migrations:migrate
1 голос
/ 01 мая 2019

JSON Type - неизвестный тип для вашей версии базы данных MariaDB (cf тип документации ).Doctrine создает неверный сценарий миграции, потому что он не знал, какую версию вы используете.

Настройте server_version в config/packages/doctrine.yml на:

doctrine:
dbal:
    # configure these for your database server
    driver: 'pdo_mysql'
    server_version: 'XXXX'
    ...

Замените X вашей версиейс префиксом mariadb- как , упомянутым в документации .Поэтому DoctrineBundle будет знать, что JSON не поддерживается, и заменит другой тип.

...