数据库配置
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
连接数据库的用户名