symfony - 教义表 migrations_versions 列长度
问题描述
在带有 Doctrine Migrations 2.2.0 的 Symfony 5 上,我想执行一个自定义的学说迁移文件。我的实体是使用 InnoDB utf8mb4_unicode_ci (在教义.yaml 中的默认值)创建的。
当我执行时,bin/console doctrine:migrations:status --show-versions
我得到:
An exception occurred while executing 'CREATE TABLE migration_versions (version VARCHAR(1024) NOT NULL, executed_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', PRIMARY KEY(version)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB':
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 3072 bytes
所以我修改了doctrine_migrations.yaml并将version_column_length的值更改为255,但现在使用我得到的相同命令
In BaseNode.php line 425:
Invalid configuration for path "doctrine_migrations.storage.table_storage.version_column_length": The minimum length for the version column is 1024.
In ExprBuilder.php line 187:
The minimum length for the version column is 1024.
可以将自动创建的实体表的 varchar 长度更改为 1024,因此这不是我的数据库的限制。如何自动创建具有适当列长度的 migrations_versions 表?
配置/包/doctrine.yaml
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'
mapping_types:
enum: string
# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
#server_version: '5.7'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
配置/包/doctrine_migrations.yaml
doctrine_migrations:
migrations_paths:
'DoctrineMigrations': '%kernel.project_dir%/src/Migrations'
storage:
table_storage:
table_name: 'migration_versions'
version_column_name: 'version'
version_column_length: 1024
executed_at_column_name: 'executed_at'
解决方案
我的同事通过简单地评论该行找到了解决方案
version_column_length: 1024
推荐阅读
- django - 如何在 Django 中保存 HTML 表单时保存外键字段?
- java - 如何按顺序运行 AKKA StreamRefs?
- typescript - Typescript - 仅检查属性是否存在并忽略属性本身的类型检查而不使用任何方法的方法?
- http2 - 为什么不能重用http2流?
- assembly - 在asm中将保护模式(32位)切换到实模式(16位),低电平
- django - 试图将我的模型的外键传递到 URL 以进行动态路由
- java - 编译生成以下错误:“错误:不兼容的类型:推理变量 T 具有不兼容的等式约束 Todo,TodoCouchDB”
- visual-studio-code - 使用 --no-sandbox 运行的电子应用程序会生成警告和错误
- java - 将科学记数法格式的字符串字符转换为标准记数法
- c# - C# 合并 2 个 Json 字符串