解決Laravel項(xiàng)目MySQL 5.6數(shù)據(jù)庫(kù)Migration創(chuàng)建報(bào)錯(cuò)的方法
開(kāi)發(fā)環(huán)鏡:PHP > 7.0
Laravel 5.5版本
數(shù)據(jù)庫(kù):MySQL V5.6
對(duì)于較新版本的Laravel框架,建議使用MySQL 5.7數(shù)據(jù)庫(kù)以上版本,避免類(lèi)為字符集等問(wèn)題,而造成Migration創(chuàng)建數(shù)據(jù)庫(kù)報(bào)錯(cuò)等問(wèn)題。
但對(duì)于之前就使用MySQL 5.6的數(shù)據(jù)庫(kù),我們應(yīng)該如何解決Migration創(chuàng)建數(shù)據(jù)庫(kù)報(bào)錯(cuò)的問(wèn)題呢?下面我們提供兩個(gè)解決的方案:
方法1、直接修改字符集
修改config\database.php文件
新版本Laravel MySQL采用utf8mb4字符集,需要修改代碼:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
修改為:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
再使用php artisan migrate即可在MySQL 5.6中創(chuàng)建數(shù)據(jù)庫(kù)成功。
方法2、修改AppServiceProvider.php文件
1、修改App\Providers\AppServiceProvider.php文件
public function boot()
{
//
}
修改為:
use Schema; //引入Schema
public function boot()
{
//
Schema::defaultStringLength(191);
}
Schema::defaultStringLength(191)指定字符集長(zhǎng)度
然后再使用php artisan migrate命令創(chuàng)建數(shù)據(jù)庫(kù)成功!
開(kāi)發(fā)環(huán)鏡:PHP > 7.0
Laravel 5.5版本
數(shù)據(jù)庫(kù):MySQL V5.6
對(duì)于較新版本的Laravel框架,建議使用MySQL 5.7數(shù)據(jù)庫(kù)以上版本,避免類(lèi)為字符集等問(wèn)題,而造成Migration創(chuàng)建數(shù)據(jù)庫(kù)報(bào)錯(cuò)等問(wèn)題。
但對(duì)于之前就使用MySQL 5.6的數(shù)據(jù)庫(kù),我們應(yīng)該如何解決Migration創(chuàng)建數(shù)據(jù)庫(kù)報(bào)錯(cuò)的問(wèn)題呢?下面我們提供兩個(gè)解決的方案:
方法1、直接修改字符集
修改config\database.php文件
新版本Laravel MySQL采用utf8mb4字符集,需要修改代碼:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
修改為:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
再使用php artisan migrate即可在MySQL 5.6中創(chuàng)建數(shù)據(jù)庫(kù)成功。
方法2、修改AppServiceProvider.php文件
1、修改App\Providers\AppServiceProvider.php文件
public function boot()
{
//
}
修改為:
use Schema; //引入Schema
public function boot()
{
//
Schema::defaultStringLength(191);
}
Schema::defaultStringLength(191)指定字符集長(zhǎng)度
然后再使用php artisan migrate命令創(chuàng)建數(shù)據(jù)庫(kù)成功!