顯示具有 migrate 標籤的文章。 顯示所有文章
顯示具有 migrate 標籤的文章。 顯示所有文章

2018年2月19日 星期一

Laravel 為已存在的 table 新增欄位

首先建立一份新的 migration
php artisan make:migration add_paid_to_users --table="users"
後面加了 --table 的參數,產生出來的檔案會幫忙把 schema 加進去。
出來檔案會長這樣。



接著再把要修改的欄位加進去
Schema::table('users', function($table) {
    $table->string("title");
    $table->text("description");
    $table->timestamps();
});

最後執行 php artisan migrate 就可以了。

非常不建議在原來的 migration 檔案裡面修改欄位後執行 php artisan migrate:refresh
這會把原本的資料都給清除!!

Laravel 執行 php artisan migrate 出現 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

如果執行的 DB 是 mysql 5.7.7 以上的話是不會發生這問題的。

但如果是跑 MariaDB 或是比較舊版的 mysql 就會出現這個錯誤。



網路上找到的解決方法:
修改 app/Providers/AppServiceProvider.php 這個檔案。

use Illuminate\Support\Facades\Schema;
public function boot()
{
    Schema::defaultStringLength(191);
}