Symfony 4通过make生成用户后:用户架构更新崩溃
我正在尝试通过CLI创建用户:()Symfony 4通过make生成用户后:用户架构更新崩溃,symfony,mariadb,command-line-interface,generate,Symfony,Mariadb,Command Line Interface,Generate,我正在尝试通过CLI创建用户:() php-bin/console-make:user 此命令用于创建实现UserInterface的User.php实体 但在命令之后: php bin/console原则:模式:更新--force 我发现错误: 在AbstractMySQLDriver.php第79行中: 执行“CREATE TABLE user(id INT AUTO_INCREMENT NOT NULL,email VARCHAR(18)”时发生异常 0)不为空,角色JSON不为空,密码V
php-bin/console-make:user
此命令用于创建实现UserInterface的User.php实体
但在命令之后:
php bin/console原则:模式:更新--force
我发现错误:
在AbstractMySQLDriver.php第79行中:
执行“CREATE TABLE user(id INT AUTO_INCREMENT NOT NULL,email VARCHAR(18)”时发生异常
0)不为空,角色JSON不为空,密码VARCHAR(255)不为空,唯一索引UNIQ_8D93D649E7927C74(emai
l) ,主键(id))默认字符集utf8mb4 COLLATE utf8mb4\u unicode\u ci ENGINE=InnoDB':
SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查ma
与您的MariaDB服务器版本相对应的nual,以便使用接近“JSON NOT NULL,pass”的正确语法
字VARCHAR(255)不为空,第1行的唯一索引UNIQ_8D93D649E7927C7'
在PDOConnection.php第90行中:
SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查ma
与您的MariaDB服务器版本相对应的nual,以便使用接近“JSON NOT NULL,pass”的正确语法
字VARCHAR(255)不为空,第1行的唯一索引UNIQ_8D93D649E7927C7'
在PDOConnection.php第88行中:
SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查ma
与您的MariaDB服务器版本相对应的nual,以便使用接近“JSON NOT NULL,pass”的正确语法
字VARCHAR(255)不为空,第1行的唯一索引UNIQ_8D93D649E7927C7'
编辑:
有关sql的信息:
服务器类型:MariaDB
服务器版本:10.1.31-MariaDB-MariaDB.org二进制分发
协议版本:10JSON类型对于您的MariaDB数据库版本(cf)是未知类型。条令创建了一个错误的迁移脚本,因为它不知道您使用的是哪个版本 将
config/packages/doctrine.yml
中的server\u version
配置为:
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: 'XXXX'
...
将X替换为您的版本,前缀为
mariadb-
as。因此DoctrineBundle将知道JSON不受支持,并将替换为另一种类型。您的MariaDB必须更新。您有一个type=JSON的字段(例如roles),但也就是说,您有10.1版
另外,您使用的方法(update+
--force
)也不是很symfony4。更好的方法是:
php bin/console make:user
php bin/console make:migration
php bin/console doctrine:migrations:migrate
您使用的是哪一版本的maria db?问题已更新,但我接受了另一个答案,因为我讨厌迁移,而且它可以工作:)适应需要一点时间,但我无法想象没有迁移的情况。发生的事情更加可预测,如果出现问题,很容易追溯