数据库配置

未匹配的标注

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
发起讨论 只看当前版本


暂无话题~