一浴骂、前言
今天嘗試下在rails中將sqlite3數(shù)據庫換成mysql數(shù)據庫度宦,遇到了報錯,以下是報錯詳情和解決過程
二童社、報錯記錄和解決過程
1.創(chuàng)建新的項目blog2
終端執(zhí)行:
rails new blog2 --skip-bundle -d mysql
這個指令的意思是跳過自動安裝bundle求厕,并改用mysql數(shù)據庫
2.新建blog的model
終端執(zhí)行:
rails g modle blog
在新生成的遷移文件中加入代碼:
def change
create_table :blogs do |t|
+ t.string :title
+ t.text :description
t.timestamps
end
3.運行遷移
終端執(zhí)行:
rails db:migrate
這時候就出現(xiàn)了報錯,如下圖:
由于沒有遇到過這種錯誤扰楼,因此我就去谷歌尋找解決方案
4.google搜索
將"Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock'"這個錯誤提示進行google搜索呀癣,篩選了兩個方案:
(1)方案1:使用mysql.server start重啟mysql服務
終端執(zhí)行:
mysql.server start
再次運行:
rails db:migrate
仍然出現(xiàn)相同的報錯
(2)方案2:將database.yml中的host: localhost改成host: 127.0.0.1
這里在修改database.yml文件時,沒有對齊灭抑,導致了報錯:
正確縮進后十艾,再次執(zhí)行:
rails db:migrate
產生了新的報錯:
提示:Mysql2::Error: Unknown database 'blog2_development'
5.向前輩請教
給出的解決方案是,先執(zhí)行:
rails db:create
目的是為了產生相應的數(shù)據庫
于是腾节,我將database.yml文件內容還原成初始狀態(tài)忘嫉,即使用原來的host: localhost
然后執(zhí)行:
rails db:create
rails db:migrate
果然順利解決了問題,如圖:
三案腺、結論
在使用mysql時庆冕,先要運行rails db:create
創(chuàng)建相應的數(shù)據庫,然后再rails db:migrate
劈榨,否則由于沒有數(shù)據庫的存在访递,再怎么執(zhí)行遷移命令也會報錯的。
四同辣、參考資料: