首页
/ Diesel CLI 中 exclude_custom_type_definitions 配置项的正确使用方式

Diesel CLI 中 exclude_custom_type_definitions 配置项的正确使用方式

2025-05-17 05:23:24作者:董斯意

在使用 Diesel ORM 框架与 PostgreSQL 数据库交互时,开发者经常会遇到需要处理自定义 SQL 类型的情况。特别是在结合 postgis-diesel 扩展处理地理空间数据时,正确配置 schema 生成行为尤为重要。

Diesel CLI 工具提供了一个名为 exclude_custom_type_definitions 的配置项,用于控制自定义类型的生成行为。然而,当前文档中存在一个拼写错误,将正确的配置项名称 except_custom_type_definitions 误写为了 exclude_custom_type_definitions

当开发者按照错误文档配置时,会出现两个问题:

  1. 生成的 schema 文件会被错误地保存到以配置值为名称的文件中,而非指定的 src/schema.rs
  2. 无法正确排除自定义类型定义,导致重复定义问题

正确的配置方式是在 diesel.toml 文件中使用:

[print_schema]
file = "src/schema.rs"
custom_type_derives = ["diesel::query_builder::QueryId"]
import_types = ["diesel::sql_types::*", "postgis_diesel::sql_types::*"]
except_custom_type_definitions = ["Geometry"]

这种配置下,Diesel CLI 会:

  1. 正确将输出保存到指定的 schema.rs 文件
  2. 跳过 Geometry 类型的自定义定义,转而使用 postgis-diesel 提供的类型
  3. 为其他自定义类型自动生成合适的 Rust 类型定义

对于使用 postgis-diesel 等扩展的开发者来说,这个配置尤为重要。它允许开发者复用扩展库中已经定义好的类型,避免重复定义导致的编译错误或类型不一致问题。

建议开发者在遇到 schema 生成行为不符合预期时,首先检查 diesel.toml 中的配置项拼写是否正确,特别是这个容易混淆的配置项名称。正确的配置可以显著提升开发体验,特别是在处理复杂自定义类型时。

登录后查看全文
热门项目推荐
相关项目推荐