Необходимо переключиться с SQLite3 на MySQL и развернуть с MySQL - PullRequest
0 голосов
/ 20 февраля 2012

В настоящее время мы используем SQLite3 в качестве нашей базы данных и хотим переключить ее на MySQL, прежде чем отправлять наше приложение Rails в прямом эфире через Passenger и Nginx на нашу Linode Ubuntu 10.04 Lucid box.

мы настроилисервер msql на нашей коробке linode ubuntu 10.04 и установите пароль для пользователя root.как мы настраиваем database.yml?как настроить эту MySQL базу данных?У нас установлен гем mysql2 и в нашем Gemfile.

Как должен выглядеть database.yml для развертывания с MySQL?

Требуется ли для базы данных какое-либо конкретное имякак в database name?

Мы собираемся запустить rake db:create на нашей машине или запустить его на нашем Ubuntu box?

current database.yml

# SQLite version 3.x
# gem install sqlite3
# 
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 2000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 2000

production:
adapter: mysql2
encoding: utf8
database: production
pool: 5
username: root
password: "mysql password"

Ответы [ 3 ]

1 голос
/ 20 февраля 2012

Вы пробовали простой тест соединения?Если нет, вот скрипт для проверки соединения с вашей базой данных.

#! /usr/bin/ruby

# getting required gems  
require 'rubygems'  
require 'mysql'  

## ----- test the connection -----  
# http://rubydoc.info/gems/mysql/2.8.1/frames  
# real_connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil)
mysql = Mysql.connect('localhost', 'root', 'password', 'db_name', 3006, '', '')  

## ----- if connected, will list databases -----  
puts mysql.list_dbs().to_s  

В случае, если «mysql» не был установлен должным образом, вам придется настраивать свойства установки.На моем Mac (отличном от вашего linux-компьютера) я ссылался на это сообщение в блоге , чтобы получить что-то вроде этого,

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with mysqlconfig=/usr/local/mysql/bin/mysql_config

ОБНОВЛЕНИЕ - Пришлось переустановить gem mysql для другой версии ruby, и удаление нотации архитектуры позволило мне установить gem.

sudo gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

1 голос
/ 20 февраля 2012

Похоже, с вашим database.yml все в порядке, за исключением того факта, что у вас должна быть ваша производственная база данных имен с таким именем: projectname_production

Ответ на ваш вопрос о том, как создать базу данных один раз на сервере, sshна ваш сервер приложений и выполните rab db: create RAILS_ENV = production

Это создаст производственную базу данных на сервере.То же самое с вашей миграцией.Это должно быть rake db: migrate RAILS_ENV = production.Это запустит миграцию для вашей производственной базы данных.

1 голос
/ 20 февраля 2012

На рабочем сервере перейдите в корневой каталог приложения и введите nano config/database.yml и вставьте этот код. Измените имена.

production:
  adapter: mysql
  database: something_production
  username: somethingotherthanroot
  password: passwordnostring
  host: 127.0.0.1

Теперь создайте базу данных самостоятельно, насервер, или вы можете запустить rake RAILS_ENV=production db:create:all, черт возьми, я никогда не пробовал, но я уверен, что вы можете сделать rake db:create:production.

как только сделаете, просто сделайте rake RAILS_ENV=production db:migrate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...