2012-03-25 4 views
6

Я изучаю использование mysql для приложений rails, и, наконец, я смог запустить приложение (вроде, пока). Мне удалось установить mysql с homebrew, а затем заполнил файл database.yml и запустил rake db: create. Теперь я могу запустить мой сервер rails и перейти к моей домашней странице своего приложения (ранее у меня не было ошибки базы данных).где моя база данных находится при использовании mysql в rails?

Итак, теперь, кажется, что база данных (-ов) создана, где она расположена? Мне было интересно, потому что я ранее использовал sqlite3 и смог увидеть мой файл базы данных разработки в app/db/development.db

Я просто хочу более подробно понять, как работает mysql в контексте рельсов.

ответ

5

При использовании MySQL или других полных серверных систем РСУБД вместо SQLite у вас не будет файла базы данных, созданного с вашим приложением. Вместо этого база данных хранится в экземпляре MySQL на сервере.

Технически существуют файлы, связанные с таблицами, хранящимися в каталоге данных MySQL, но их местоположение не относится к вашему приложению и на самом деле может даже не читаться вашей обычной учетной записью пользователя оболочки. Используя RDBMS клиента и сервера вместо файлового, такого как SQLite, вы делегируете все обязанности (*), связанные с хранилищем базы данных, на РСУБД, развязывая хранилище данных из вашего приложения.

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

# Connect from the command line 
$ mysql -usomeusername -p 

# Execute MySQL commands 
mysql> SHOW DATABASES; 

Выведу что-то вроде:

+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| demo    | 
| demo_development | 
| demo_test   | 
| mysql    | 
| test    | 
+--------------------+ 
7 rows in set (0.13 sec) 

(*) Примечания - Я имею в виду хранилище моделей данных, а не какое-либо дополнительное файловое хранилище, которое может использовать ваше приложение, которое управляется Rails и вашим кодом приложения.

+0

как только я получаю на второй линии (показать баз данных) я получаю «Не обращая внимания на запрос к другой базе данных», как результат, не ваш выход .. какие-либо идеи, почему? – jay

+1

См. [Этот пост] (http://forums.mysql.com/read.php?10,2325,146615#msg-146615) Правильно ли указана ваша командная строка, в частности часть '-usomeusername'? Это буквально «-u» и «someusername» склеиваются. –

1

Если вы создали db успешно, то у вас, вероятно, есть такой conf. в database.yml:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: site_db 
    pool: 5 
    username: root 
    password: secret 
    socket: /var/run/mysqld/mysqld.sock 

вы можете просматривать базы данных (sitedb) с PHPMyAdmin или терминалом

0

Убедитесь, что вы подключаетесь к MySQL с -u команды, такие как корень, то он перечислит базы данных. (поставьте то, что находится в вашем файле database.yml). Я просто соединился с no -u и ничего не видел. Скорее всего, связано с моим локальным пользователем, и у меня не было прав на просмотр баз данных! упс!

0

Основываясь на моем недавнем опыте, я думаю, что вы использовали команду с ошибкой при вводе учетных данных mysql. В моем случае я поступил следующим образом:

[email protected]# mysql -u root -opabc123 

где -o и -p это параметры командной строки, а остальные: абв123 паролем. здесь я случайно ввел -o параметр команды, который стал причиной исчезновения баз данных. (см. -o-one-database.)

Не пропустите -o и попробуйте.

надеюсь, что это помогает

Смежные вопросы