# database `database` 包提供基于标准库 `database/sql` 的连接池生命周期,不绑定 ORM 或驱动: - `Config` / `ConfigFromEnv`:连接池参数和 `GO_OMNI_DB_*` 环境变量。 - `Open`:创建连接池、设置连接上限并在返回前执行 `PingContext`。 - `Health`:用于就绪检查。 - `InTx`:统一事务提交和回滚;工作函数返回错误或 panic 时回滚。 - `Close`:由嵌入的 `*sql.DB` 提供,应用退出时显式调用。 框架不导入 MySQL、PostgreSQL 等具体驱动。应用负责注册驱动: ```go import ( "context" _ "github.com/go-sql-driver/mysql" "git.yuntuo.hk/k2safe/go-omni/database" ) cfg, err := database.ConfigFromEnv("GO_OMNI_DB_") db, err := database.Open(context.Background(), cfg) defer db.Close() ``` 连接池相关环境变量: ```text GO_OMNI_DB_DRIVER=mysql GO_OMNI_DB_DSN=user:password@tcp(127.0.0.1:3306)/app?parseTime=true GO_OMNI_DB_MAX_OPEN_CONNS=10 GO_OMNI_DB_MAX_IDLE_CONNS=5 GO_OMNI_DB_CONN_MAX_LIFETIME=30m GO_OMNI_DB_CONN_MAX_IDLE_TIME=5m GO_OMNI_DB_PING_TIMEOUT=5s ``` `DSN` 必填,驱动默认是 `mysql`。数据库建库、迁移、表结构和具体 Repository 属于业务项目或可选模块,不会被核心包自动执行。