Уменьшите длину varchar для класса acl в Symfony - PullRequest
0 голосов
/ 10 января 2019

У меня есть проект Symfony (версия 2.8), который запускает следующие пакеты:

  • Sonata Admin Bundle
  • Комплект пользователя Sonata
  • FOS User Bundle

Этот веб-сайт связан с базой данных mySQL (версия 5.6).

У меня были проблемы с доктриной, когда я хочу обновить схему базы данных с помощью следующей команды:

php app/console doctrine:schema:update --force

Поскольку тип varchar (255) не поддерживался механизмом innoDB и моей базой данных, я уменьшил длину всего 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)?

Заранее спасибо.

1 Ответ

0 голосов
/ 10 января 2019

Исправить можно в /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
...