Mysql 减少Symfony中acl类的varchar长度
我有一个symfony项目(2.8版本),它运行以下捆绑包:Mysql 减少Symfony中acl类的varchar长度,mysql,symfony,doctrine-orm,acl,sonata-admin,Mysql,Symfony,Doctrine Orm,Acl,Sonata Admin,我有一个symfony项目(2.8版本),它运行以下捆绑包: 奏鸣曲管理包 索纳塔用户包 FOS用户包 该网站与mySQL数据库(5.6版)链接 当我想用以下命令更新数据库方案时,我遇到了条令问题: php app/console doctrine:schema:update --force 因为innoDB引擎和我的数据库不支持varchar(255)类型,所以我将所有varchar的长度减少到191,现在它可以工作了 我现在的问题是,我希望生成我无法控制的表(显然与acl链接),如下所
- 奏鸣曲管理包
- 索纳塔用户包
- FOS用户包
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行中的问题 改为
$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
谢谢你,艾哈迈德,我已经有了这些默认的表选项,但在这种情况下,问题是由于5.6版本的MySql。。。非常感谢您的文件修复它的完美现在!
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