正确的Ruby on Rails Database.yml文件的MySQL配置


88

我有这个配置:

development:
  adapter: mysql2
  encoding: utf8
  database: my_db_name
  username: root
  password: my_password
  host: mysql://127.0.0.1:3306

我收到此错误:

Unknown MySQL server host 'mysql://127.0.0.1:3306' (1)

我做错了什么明显吗?

Answers:


196

您应该将主机与端口号分开。您可能会有一些东西,例如:

development:
  adapter: mysql2
  encoding: utf8
  database: my_db_name
  username: root
  password: my_password
  host: 127.0.0.1
  port: 3306

2
和主持人不能host: localhost
Adrian C.

出于安全原因,通常root用作生产数据库用户被认为是不正确的做法。要为您的Rails应用设置专用用户,请参阅有关用户创建MySQL文档
菲利克斯·蒙特兹

1
同样出于安全原因(如果您使用的是版本控制),则不应将数据库密码存储在中database.yml。相反,请执行user3118220所做的操作并从您的环境中获取它:password: ENV['MY_RAILS_APP_DB_PASSWORD']
菲利克斯·蒙特兹

17

您也可以这样:

default: &default
  adapter: mysql2
  encoding: utf8
  username: root
  password:
  host: 127.0.0.1
  port: 3306

development:
  <<: *default
  database: development_db_name

test:
  <<: *default
  database: test_db_name

production:
  <<: *default
  database: production_db_name

2

如果您可以有一个空的config / database.yml文件,然后定义ENV ['DATABASE_URL']变量,那么它将起作用

$ cat config/database.yml
 
$ echo $DATABASE_URL
mysql://root:my_password@127.0.0.1:3306/my_db_name

对于Heroku:heroku config:set DATABASE_URL='mysql://root:my_password@host.com/my_db_name'


2

使用“ utf8mb4”作为编码来覆盖所有unicode(包括表情符号)

default: &default
  adapter: mysql2
  encoding: utf8mb4
  collation: utf8mb4_bin
  username: <%= ENV.fetch("MYSQL_USERNAME") %>
  password: <%= ENV.fetch("MYSQL_PASSWORD") %>
  host:     <%= ENV.fetch("MYSQL_HOST") %>

参考1)(参考2


0

如果您有多个数据库进行测试和开发,这可能会有所帮助

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost
production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: DBNAME
  pool: 5
  username: usr
  password: paswd
  shost: localhost

1
有何shost不同host
konyak

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.