Синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в вашем SQL в symfony

Когда я запускаю команду php bin/console doctrine:migration:migrate, я получаю эту ошибку, я не знаю, откуда она взялась.

ошибка командной строки: В строке 99 AbstractMySQLDriver.php:

An exception occurred while executing 'CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(180) NOT NU LL, roles JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C74 (email), PRIMARY KEY(id )) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB':

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7' at line 1

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

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7' at line 1

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

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649E7927C7' at line 1

Мой env мой env

Какую версию mysql вы используете? JSON был представлен в MySQL 5.7.

Andrei Dumitrescu-Tudor 18.11.2018 23:48

10.1.25-MariaDB

Abdo Abo 18.11.2018 23:50

JSON был добавлен в MariaDB 10.2.7 согласно mariadb.com/kb/en/library/json-data-type

Andrei Dumitrescu-Tudor 18.11.2018 23:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
7
3
12 709
4

Ответы 4

Андрей прав. Вам нужно либо обновить свою базу данных, либо (что намного проще) настроить Symfony для использования более низкой версии MySQL.

config/packages/doctrine.yaml

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

здесь вы можете найти таблицу совместимости MySQL и MariaDB.

Обновите версию MySQL до MySQL 5.7. Поскольку ваша текущая версия не поддерживает объекты JSON MySQL 5.7.

В этом случае вы можете просто вставить этот код в конфигурация / пакеты / doctrine.yaml:

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

Обратите внимание, что информация о версии может противоречить той, которая указана в URL-адресе базы данных.

Если вы добавили информацию о версии сервера в файл doctrine.yaml и проблема не исчезла, попробуйте в конце проверить "serverVersion", если URL вашей базы данных, и установите для него значение 5.6 или совместимый vresion, который вы нашли.

Другие вопросы по теме