如何使用 DBIC make_schema_at更新架构



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

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

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

谢谢。

是的,有多种解决方案。

使用 Schema::Loader 的配置选项指定用于生成名称的 sub 和/或将 DBIC 架构设为主架构。

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

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

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

花时间

阅读 DBIx::Class::Schema::Loader::Base 的文档是非常值得的。特别是,仔细查看"moniker_map"、"col_accessor_map"和"rel_name_map"属性。

相关内容

最新更新