【问题标题】:How do I update schema with DBIC make_schema_at?如何使用 DBIC make_schema_at 更新架构?
【发布时间】:2014-01-22 01:27:06
【问题描述】:

我目前正在使用 DBIC Schema Loader 函数 make_schema_at 将我现有的数据库转储到其架构中。一旦模式被转储,我通常喜欢进入并清理关系中的访问器名称以便更好地阅读。

但是有时我需要再次更新我的架构,例如添加一个新表和关系,这意味着再次调用 make_schema_at 然后重命名我的所有访问器,这非常耗时。

有没有人可以推荐的更好的方法?

谢谢。

【问题讨论】:

    标签: mysql perl schema dbix-class


    【解决方案1】:

    是的,有多种解决方案。

    要么使用 Schema::Loader 的配置选项来指定子名称生成和/或使您的 DBIC 架构为主。

    在这种情况下,您编写一个新的结果类而不是在数据库中创建表,并使用 DBIC 的功能来生成 DDL 查询。

    您甚至可以使用 DBIx::Class::Migration 自动对数据库进行 DDL 更改。

    【讨论】:

    • 感谢 abraxxa,我尝试将命名方法更改为 v8,但这不符合我的需要。我不确定如何创建自定义命名子,您能指出正确的方向吗?
    【解决方案2】:

    切勿在生成的 DBIC 架构文件中编辑高于 MD5 哈希的代码。你只是在给自己找麻烦。

    值得花时间阅读DBIx::Class::Schema::Loader::Base 的文档。特别要仔细查看“moniker_map”、“col_accessor_map”和“rel_name_map”属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2019-04-21
      • 2015-02-22
      • 1970-01-01
      相关资源
      最近更新 更多