语法错误或访问冲突:1064您在Symfony中的SQL错误

时间:2018-11-18 22:44:13

标签: symfony symfony4 doctrine-migrations

当我运行comand php bin/console doctrine:migration:migrate时,出现此错误,我不知道它来自哪里。

命令行错误: 在AbstractMySQLDriver.php第99行中:

  

执行'CREATE TABLE用户(id INT AUTO_INCREMENT NOT NULL,发送电子邮件VARCHAR(180)NOT NU)时发生异常     LL,角色JSON NOT NULL,密码VARCHAR(255)NOT NULL,UNIQUE INDEX UNIQ_8D93D649E7927C74(电子邮件),PRIMARY KEY(id     ))默认字符集utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB':

     

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。检查手册      对应于您的MariaDB服务器版本,以在'JSON NOT NULL,密码VARCHAR(255)附近使用正确的语法     不为空,第1行的UNIQUE INDEX UNIQ_8D93D649E7927C7'

在PDOConnection.php第109行中:

  

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。检查手册      对应于您的MariaDB服务器版本,以在'JSON NOT NULL,密码VARCHAR(255)附近使用正确的语法     不为空,第1行的UNIQUE INDEX UNIQ_8D93D649E7927C7'

在PDOConnection.php第107行中:

  

SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有一个错误;请参见语法。检查手册      对应于您的MariaDB服务器版本,以在'JSON NOT NULL,密码VARCHAR(255)附近使用正确的语法     不为空,第1行的UNIQUE INDEX UNIQ_8D93D649E7927C7'

我的环境 my env

4 个答案:

答案 0 :(得分:1)

安德烈(Andrei)是对的。您要么必须升级数据库,要么(更容易地)配置symfony以使用较低版本的MySQL。

config/packages/doctrine.yaml

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

here,您可以找到具有MySQL和MariaDB兼容性的表。

答案 1 :(得分:0)

将您的MySQL版本更新为MySQL 5.7。 因为您当前的版本不支持MySQL 5.7的JSON对象。

答案 2 :(得分:0)

在这种情况下,您只需将此代码粘贴到 config / packages / doctrine.yaml 中:

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

答案 3 :(得分:-1)

请注意,版本信息可能与数据库 URL 中定义的版本信息冲突

如果您将服务器版本信息添加到doctrine.yaml 并且问题仍然存在,请尝试在最后检查“serverVersion”,如果您的数据库URL 并将其设置为5.6 或您找到的兼容版本