我有一个运行以下捆绑包的symfony项目(2.8版本):
- 奏鸣曲管理包
- 索纳塔用户捆绑包
- FOS 用户捆绑包
本网站与mySQL数据库(5.6版)链接。
当我想使用以下命令更新我的数据库方案时,我在学说方面遇到了问题:
php app/console doctrine:schema:update --force
因为 innoDB 引擎和我的数据库不支持 varchar(255) 类型,所以我将所有 varchar 的长度减少到 191,现在它正在工作。
我现在的问题是学说想要生成我无法控制的表(显然与 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