减少symfony中acl类的varchar长度

pqwbnv8z  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(408)

我有一个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;

如何减少类类型的长度以应用varchar(191)?
提前谢谢你。

mnowg1ta

mnowg1ta1#

您可以在/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

相关问题