数据库配置
Pop 的数据库配置在项目根目录的 database.yml。在创建项目的时候,buffalo 会根据 --db-type 创建指定的数据库配置。默认是 PostgreSQL。下面是一个常见的配置文件:
development:
dialect: postgres
database: myapp_development
user: postgres
password: postgres
host: 127.0.0.1
pool: 5
test:
url: {{envOr "TEST_DATABASE_URL" "postgres://postgres:postgres@127.0.0.1:5432/myapp_test"}}
production:
url: {{envOr "DATABASE_URL" "postgres://postgres:postgres@127.0.0.1:5432/myapp_production"}}
可以看到有三个部分被定义:
- development, 开发环境下的数据库配置
- test,测试模式下的数据库配置
- production,生成环境下的数据库配置。
当然我们也可以可以别的环境的配置。但是 buffalo 不会默认调用他。
生成器#
如果项目目录下没有 database.yml 文件,可用通过命令行生成。
$ soda g config
默认就会生成 database.yml 文件在根目录下。如果需要指定数据库类型,可以通过 -t
来指定。支持的值:postgres, cockroach, mysql, or sqlite3。
配置文件位置#
默认情况下 pop 会分两步查找配置文件 database.yml:
- 根目录下
- 根目录的 config / 目录下
也可以指定配置文件的文件名:
pop.ConfigName = "my_pop_config.yml"
Env vs 详细配置#
配置文件 database.yml 也是一个 go 的模板文件,支持 go 的模板语法,包含了两个特定的方法:env 和 envOr
如样例中所见,有两种配置新连接的方法:
- development 连接使用的是最详细的配置方法,他允许我们配置每一个详细选项。
- test 和 production 连接使用的那个有点不同:它使用一个变量(参见 {{}} 标记)来设置值,也可以使用 envOr 助手。
envOr
助手尝试从一个环境变量中读取值,如果读取失败,第二个参数是默认值。例如:
envOr "TEST_DATABASE_URL" "postgres://postgres:postgres@127.0.0.1:5432/myapp_test"
尝试读取环境变量 TEST_DATABASE_URL
的值,如果没有的话,就是使用 postgres://postgres:postgres@127.0.0.1:5432/myapp_test
。
注意:url 用于连接参数,将覆盖任何其他连接的参数。所以需要确保 URL 字符串中设置了所需的所有设置。
在使用 Pop 之前,请确保已正确配置此文件!
可选项#
database#
数据库名
dialect#
数据库类型,支持的值有:
- MySQL driver: "mysql"
- PostgreSQL driver: "postgres", "postgresql" or "pg"
- Cockroach driver: "cockroach", "cockroachdb" or "crdb"
- SQLite driver: "sqlite" or "sqlite3"
driver#
使用此选项可自定义数据库驱动程序并覆盖 Pop 使用的默认驱动程序。
默认的驱动如下:
- MySQL: github.com/go-sql-driver/mysql
- PostgreSQL: github.com/lib/pq
- Cockroach DB: github.com/cockroachdb/cockroach-go/crdb
- SQLite: github.com/mattn/go-sqlite3
encoding#
目前只有 mysql 支持此选项,如果没定义,默认值是:utf8mb4_general_ci
development:
dialect: mysql
options:
encoding: "utf8_general_ci"
host#
数据库的主机地址
password#
连接数据库的密码
port#
数据库连接端口,不同的数据库类型默认值不同: | Driver | Port |
---|---|---|
PostgreSQL | 5432 | |
MySQL | 3306 | |
Cockroach | 26257 |
user#
连接数据库的用户名
推荐文章: