[mysql] Ruby on Rails Database.yml 파일의 MySQL 구성 수정

이 구성이 있습니다.

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)

내가 잘못하고 있다는 명백한 것이 있습니까?



답변

호스트와 포트 번호를 구분해야합니다. 다음과 같은 것을 가질 수 있습니다.

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


답변

다음과 같이 할 수도 있습니다.

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


답변

모든 유니 코드 (이모 지 포함)를 포함하는 인코딩으로 ‘utf8mb4’사용

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 )


답변

빈 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'


답변

테스트 및 개발을위한 데이터베이스가 여러 개인 경우 도움이 될 수 있습니다.

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


답변

이 답변 중 어느 것도 나를 위해 일하지 않았 으며 문제를 해결 한 Werner Bihl 의 답변을 찾았습니다 .

Ruby on Rails 앱용 mysql 데이터베이스를 설정할 때 “Ca n’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock'”오류 발생


답변