【问题标题】:doctrine migrations phar, how to setup type mapping?教义迁移 phar,如何设置类型映射?
【发布时间】:2013-02-26 10:01:57
【问题描述】:

我想在我的非 symfony 项目中使用学说迁移,所以我从 https://github.com/doctrine/migrations 获得了独立的 phar。我正确配置了所有内容(数据库配置和配置),然后在执行“迁移:状态”时出现错误:

[Doctrine\DBAL\DBALException]
请求的未知数据库类型枚举, Doctrine\DBAL\Platforms\MySqlPlatform 可能不支持。

现在有很多关于如何在 symfony 应用程序上下文中解决此问题的资源(例如 http://wildlyinaccurate.com/doctrine-2-resolving-unknown-database-type-enum-requested),但是在这种情况下我可以将这种类型映射放在哪里?我应该提取.phar,将代码放入其中(在哪里?)然后重新打包它? (怎么做?)

【问题讨论】:

  • 您需要使用迁移并自行设置 CLI。从克隆github.com/doctrine/migrations 并通过composer 安装开始。之后,自定义您的 CLI 运行器以根据您自己的需要设置连接。
  • Ocramius 建议额外选项不起作用的方式(--db-config,--configuration)。这是众所周知的错误。

标签: doctrine-orm


【解决方案1】:

我已经为 Zend 框架尝试了一些东西,并且成功了:

打开 ./vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php 搜索功能initializeDoctrineTypeMappings() 为枚举创建一个条目,

'enum' => 'string'

像魅力一样工作!

【讨论】:

    【解决方案2】:

    这个问题在这个分支中解决了
    https://github.com/dyadyavasya/migrations

    默认情况下,Doctrine 不会将 MySQL 枚举类型映射到 Doctrine 类型。这是因为枚举包含状态(它们的允许值)而 Doctrine 类型不包含。

    在链接处使用 fork,您可以注册 MySQL ENUM 以映射到 Doctrine 字符串。 这样 Doctrine 总是将 ENUM 解析为 Doctrine 字符串。

    迁移.yml

    名称: Doctrine Sandbox Migrations 迁移命名空间:DoctrineMigrations 表名:学说迁移版本 迁移目录:/path/to/migrations/classes/DoctrineMigrations 映射类型: 枚举:字符串

    更多信息 - https://github.com/dyadyavasya/migrations#migrationsyml

    【讨论】:

    • 这个答案需要一些工作。您说操作员所说的问题在您提供的链接中“已解决”,但您需要指定解决的方式。如果您编辑您的答案以在此处提供有关您提供的链接以及为什么它与问题相关的更多信息,您可能会收到其他读者的 +1。
    【解决方案3】:

    奥克拉米乌斯说的:

    您需要使用迁移并自行设置 CLI。从克隆 github.com/doctrine/migrations 开始,然后通过 composer 安装。之后,自定义您的 CLI 运行器以根据您自己的需要设置连接。

    【讨论】:

    • 请指路
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2021-08-30
    • 2020-01-06
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多