在 Symfony 中减少 acl class 的 varchar 长度
Decrease varchar length for acl class in Symfony
我有一个 symfony 项目(2.8 版),运行 包含以下包:
- 奏鸣曲管理包
- 奏鸣曲用户包
- FOS 用户包
此网站链接到 mySQL 数据库(5.6 版)。
当我想使用以下命令更新我的数据库方案时,我遇到了原则问题:
php app/console doctrine:schema:update --force
因为 innoDB 引擎和我的数据库不支持 varchar(255) 类型,所以我将所有 varchar 的长度减少到 191,现在它可以工作了。
我现在的问题是 doctrine 想要生成我无法控制的表(显然与 acl 链接),如下所示:
CREATE TABLE acl_classes (id INT UNSIGNED AUTO_INCREMENT NOT NULL, class_type VARCHAR(200) NOT NULL, UNIQUE INDEX UNIQ_69DD750638A36066 (class_type), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
如何减少 class_type 的长度来应用 varchar(191) ?
提前致谢。
您可以在 /vendor/symfony/security-acl/Dbal/Schema.php 第 70 行 https://github.com/symfony/security-acl/blob/master/Dbal/Schema.php#L70
中修复
$table->addColumn('class_type', 'string', array('length' => 200));
改为
$table->addColumn('class_type', 'string', array('length' => 190));
或者你可以试试utf8mb4
编码:
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
我有一个 symfony 项目(2.8 版),运行 包含以下包:
- 奏鸣曲管理包
- 奏鸣曲用户包
- FOS 用户包
此网站链接到 mySQL 数据库(5.6 版)。
当我想使用以下命令更新我的数据库方案时,我遇到了原则问题:
php app/console doctrine:schema:update --force
因为 innoDB 引擎和我的数据库不支持 varchar(255) 类型,所以我将所有 varchar 的长度减少到 191,现在它可以工作了。
我现在的问题是 doctrine 想要生成我无法控制的表(显然与 acl 链接),如下所示:
CREATE TABLE acl_classes (id INT UNSIGNED AUTO_INCREMENT NOT NULL, class_type VARCHAR(200) NOT NULL, UNIQUE INDEX UNIQ_69DD750638A36066 (class_type), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB;
如何减少 class_type 的长度来应用 varchar(191) ?
提前致谢。
您可以在 /vendor/symfony/security-acl/Dbal/Schema.php 第 70 行 https://github.com/symfony/security-acl/blob/master/Dbal/Schema.php#L70
中修复$table->addColumn('class_type', 'string', array('length' => 200));
改为
$table->addColumn('class_type', 'string', array('length' => 190));
或者你可以试试utf8mb4
编码:
doctrine:
dbal:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci