[Laravel] 連接資料庫

上次完成了靜態頁面
這次就該開始連接資料庫囉!

Laravel使用了最潮的 migration 
可以理解成 資料庫的版本控制
有了 migration,當你 clone專案下來之後
再也不用去跟對方要mysql的檔案
只要執行migration就可以建立資料庫的Schema
甚至連需要的預設資料也可以一同建立!
是不是很神奇呢!就讓我們開始吧

其實要做得很簡單
找到專案根目錄下的 .env 檔案
看到這幾行
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=project_db
DB_USERNAME=root
DB_PASSWORD=root
把它改成你的資料庫設定
然後就好了,就是這麼簡單

至於migration 怎麼用呢
先建立好上面指定的資料庫後
點開你的command line 在專案下輸入

php artisan migrate

他就會自己幫你執行專案目錄下\database\migrations的檔案
就跟我們一般使用migrations一樣
至於migrations怎麼用呢,這之後另外寫一篇,或是目前看的教學影片應該會用到再說
現在可以連上你的資料庫看看是不是自動增加了兩張table呢?
名稱和migrations資料夾中的檔案一樣

詳細使用方式可以看官方文件,寫得很清楚呢

當然不可倖免的有踩雷發生
執行php artisan migrate 之後一直噴出

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique (email)) [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

看了半天想不出原因
後來找到 這 篇原 文
原來laravel 5.4 為了支援儲存emojis,把預設的編碼改了
如果你用mysql 5.7.7或是更高的版本,就不會報錯
但是我docker上起的是5.6就爆了
至於他說的修改預設字串長度,個人改是失敗的
我直接升級mysql版本,這樣未來可以避免掉其他mysql相容性問題
以上是在mac上搞的,至於windows上面wagon理應更簡單

但是我卡在一個神妙的的問題... 我的mysql密碼是什麼XD
現在後台進不去啊,氣死我了
太氣了才來發文
前幾天又在工作上遇到一個覺得應該紀錄一下的雷
看看我存來要發文的連結... 一路從去年6月遇到的到現在都沒發完
只有越來越多XD
最近要勤勞一些啦,覺得該衝刺一下了

補個在windows執行完的畫面,其實command line 結果都長一樣

留言