我想在我的非symfony项目中使用doctrine迁移,所以我从https://github.com/doctrine/migrations获得了独立的phar。我正确配置了所有内容(db-configuration和configuration),然后在执行“migration:status”时出现错误:
[学说\ DBAL \ DBALException]
请求未知的数据库类型枚举, Doctrine \ DBAL \ Platforms \ MySqlPlatform可能不支持它。
现在有很多关于如何在symfony应用程序的上下文中解决这个问题的资源(例如http://wildlyinaccurate.com/doctrine-2-resolving-unknown-database-type-enum-requested)但是在这种情况下我可以在哪里放置这种类型的映射?我应该提取.phar,将代码放入其中(在哪里?)然后重新打包它? (工作原理)
答案 0 :(得分:6)
我已经为Zend框架尝试了一些东西并且它起作用了:
打开./vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
搜索功能initializeDoctrineTypeMappings()
为枚举创建一个条目,
'enum' => 'string'
像魅力一样工作!
答案 1 :(得分:0)
这个问题解决了这个问题 https://github.com/dyadyavasya/migrations
默认情况下,Doctrine不会将MySQL枚举类型映射到Doctrine类型。这是因为Enums包含state(它们允许的值)而Doctrine类型不包含。
在链接处使用fork,您可以注册MySQL ENUM以映射到Doctrine字符串。 这样,Doctrine总是将ENUM解析为Doctrine字符串。
migrations.yml
name: Doctrine Sandbox Migrations migrations_namespace: DoctrineMigrations table_name: doctrine_migration_versions migrations_directory: /path/to/migrations/classes/DoctrineMigrations mapping_types: enum: string
更多信息 - https://github.com/dyadyavasya/migrations#migrationsyml
答案 2 :(得分:-1)
Ocramius说:
您需要使用迁移并自行设置CLI。从克隆github.com/doctrine/migrations开始,然后通过composer进行安装。之后,根据自己的需要自定义CLI运行器以设置连接。