Mysql 减少Symfony中acl类的varchar长度

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链接),如下所

我有一个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行中的问题

改为

$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