数据库配置

未匹配的标注

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 使用的默认驱动程序。
默认的驱动如下:

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#

连接数据库的用户名

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
superwen
讨论数量: 0
发起讨论 只看当前版本


暂无话题~