首页 > 解决方案 > Symfony | 如何修复迁移 MySQL 语法错误

问题描述

我正在创建一个登录/注册系统,因为我以前从未做过。使用 Symfony 框架,我正在关注他们的文档(https://symfony.com/doc/current/security.html)。它建议我通过创建一个用户实体

php bin/控制台 make:user

这将创建我的用户实体和存储库。

但是,当我创建迁移并通过运行迁移时:

php bin/控制台 d:m:m

它返回给我这个语法错误:

Migration 20190502143453 failed during Execution. Error An exception occurred while executing 'CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(180) NOT NULL, roles JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649F85E0677 (username), 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_8D93D649F85E067' at line 1

在错误消息中找到返回语法错误的完整 MySQL 表创建,但是,这本身就是查询:

$this->addSql('CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(180) NOT NULL, roles JSON NOT NULL, password VARCHAR(255) NOT NULL, UNIQUE INDEX UNIQ_8D93D649F85E0677 (username), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');

遵循迁移的步骤后,我不确定为什么会出现语法错误,因为它看起来对我来说是正确的。SQL 是自动生成的。

如果有人知道如何解决这个语法错误,任何信息将不胜感激。

如果需要更多信息,我很乐意提供信息。

此致,

史蒂夫。

标签: mysqlsymfonydoctrinedatabase-migration

解决方案


推荐阅读