【问题标题】:is it possible to make diesel to handle multi database?是否可以让柴油处理多数据库?
【发布时间】:2022-01-19 12:24:24
【问题描述】:

我使用柴油作为我的 rust orm 查询库,现在当我使用新数据库时,diesel migration run 命令将覆盖最后一个scheme.rs 文件。如何使柴油可以处理多个数据库。例如,每个数据库使用不同的 schema.rs 文件,并且数据库 A 不会覆盖数据库 B shema.rs 的内容。我应该怎么做才能使其按预期工作?这是我的柴油依赖配置:

diesel = { version = "1.4.7", features = ["postgres","32-column-tables"] }

我从这个issue尝试过这种方式:

[print_schema]
include_schemas = ["schema1", "schema2", "schema3"]
exclude_schemas = ["pg_catalog", "information_schema"] # Implicit defaults include xor exclude
patch_file = ""

[print_schema.schema1]
file = "src/models/schema1.rs"
filter = { except_tables = ["spatial_ref_sys"] }

[print_schema.schema2]
file = "src/models/schema2.rs"
filter = { except_tables = ["ignored_system_table"] }

但给我提示:

$ diesel migration run                                  ‹ruby-2.7.2›
unknown field `include_schemas`, expected one of `file`, `with_docs`, `filter`, `schema`, `patch_file`, `import_types` for key `print_schema`
(base)

我应该怎么做才能让它工作?

【问题讨论】:

    标签: rust rust-diesel


    【解决方案1】:

    您可以使用单独的配置文件并在运行迁移时使用--config-file 选择一个:

    diesel1.toml:

    [print_schema]
    file = "src/models/schema1.rs"
    filter = { except_tables = ["spatial_ref_sys"] }
    

    diesel2.toml:

    [print_schema]
    file = "src/models/schema2.rs"
    filter = { except_tables = ["ignored_system_table"] }
    

    用作:

    diesel migration run --config-file=diesel1.toml
    diesel migration run --config-file=diesel2.toml
    

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 2020-08-02
      • 2020-02-06
      • 2022-12-10
      • 1970-01-01
      • 2019-11-22
      • 2021-03-17
      • 2020-06-03
      • 2021-07-25
      相关资源
      最近更新 更多