2012-03-25 35 views
6

我正在學習使用mysql for rails應用程序,並且我終於能夠啓動並運行我的應用程序(現在有點類似)。我設法用自制軟件安裝mysql,然後填充我的database.yml文件並運行rake db:create。現在我可以運行我的Rails服務器並導航到我的應用程序的主頁(以前我沒有數據庫錯誤)。在rails中使用mysql時,我的數據庫位於哪裏?

所以,現在看來,數據庫(一個或多個)創建,位於何處?我想知道,因爲我以前使用sqlite3,並能夠在app/db/development.db中看到我的開發數據庫文件。

我只是想更詳細地瞭解mysql如何在rails上下文中工作。

回答

5

當使用MySQL或其他完全基於服務器的RDBMS系統,而不是SQLite的,你不會有你的應用程序創建一個數據庫文件。相反,數據庫存儲在服務器正在運行的MySQL實例中。

技術上講,有與存儲在MySQL數據目錄表相關的文件,但他們的位置是不相關的應用程序,而事實上甚至可能沒有你的常規shell用戶帳戶可讀。通過使用客戶機/服務器RDBMS,而不是基於文件的一個類似的SQLite,您可以有效地委派全部責任(*)與數據庫存儲到RDBMS,從應用程序中解耦數據存儲。

如果你有一個客戶端連接到主機的MySQL服務器時,你會看到列出的Rails應用程序數據庫

# 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 2012-03-25 19:51:36

+1

請參閱[本文](http://forums.mysql.com/read.php?10,2325,146615#msg-146615)您的命令行是否正確,尤其是'-usomeusername'部分?這實際上是'-u'和'someusername'拼在一起。 – 2012-03-25 20:02:02

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 

可以與phpMyAdmin或終端

0

查看您的數據庫(sitedb)確保與-u命令連接到MySQL,如根,那麼它會列出數據庫。 (提供你的database.yml文件中的內容)。我只是連接沒有-u,並沒有看到任何東西。最有可能與我的本地用戶連接,我沒有權限查看數據庫!哎呀!

0

根據我最近的經驗,我認爲你拼錯命令選項,當你輸入mysql的憑據。在我來說,我輸入了以下:

[email protected]# mysql -u root -opabc123 

其中-o-p是命令選項,其餘:ABC123是密碼。這裏我偶然輸入了-o命令選項,這是數據庫消失的原因。 (請參見-o-one-database。)

請勿通過-o並嘗試。

希望這有助於

相關問題