Laravel 5.4對(duì)默認(rèn)數(shù)據(jù)庫(kù)字符集進(jìn)行了更改魄咕,現(xiàn)在utf8mb4它包含了對(duì)存儲(chǔ)表情符號(hào)的支持吟税。這只會(huì)影響新的應(yīng)用程序犬辰,只要您運(yùn)行MySQL v5.7.7及更高版本,就不需要做任何事情填物。
對(duì)于運(yùn)行MariaDB或舊版MySQL的用戶纹腌,在嘗試運(yùn)行遷移時(shí)可能會(huì)遇到此錯(cuò)誤:
[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]:語(yǔ)法錯(cuò)誤或訪問(wèn)沖突:1071指定密鑰太長(zhǎng); 最大密鑰長(zhǎng)度為767字節(jié)
您只需編輯 AppServiceProvider.php文件并在 boot方法內(nèi)設(shè)置默認(rèn)字符串長(zhǎng)度:
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
最大長(zhǎng)度是767字節(jié),utf8mb4編碼每字符使用4字節(jié)融痛,所以 767 / 4 = 191.75壶笼,所以將string的默認(rèn)長(zhǎng)度設(shè)置為191字符即可。