解决Laravel项目MySQL 5.6数据库Migration创建报错的方法
开发环镜:PHP > 7.0
Laravel 5.5版本
数据库:MySQL V5.6
对于较新版本的Laravel框架,建议使用MySQL 5.7数据库以上版本,避免类为字符集等问题,而造成Migration创建数据库报错等问题。
但对于之前就使用MySQL 5.6的数据库,我们应该如何解决Migration创建数据库报错的问题呢?下面我们提供两个解决的方案:
方法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中创建数据库成功。
方法2、修改AppServiceProvider.php文件
1、修改App\Providers\AppServiceProvider.php文件
public function boot()
{
//
}
修改为:
use Schema; //引入Schema
public function boot()
{
//
Schema::defaultStringLength(191);
}
Schema::defaultStringLength(191)指定字符集长度
然后再使用php artisan migrate命令创建数据库成功!
开发环镜:PHP > 7.0
Laravel 5.5版本
数据库:MySQL V5.6
对于较新版本的Laravel框架,建议使用MySQL 5.7数据库以上版本,避免类为字符集等问题,而造成Migration创建数据库报错等问题。
但对于之前就使用MySQL 5.6的数据库,我们应该如何解决Migration创建数据库报错的问题呢?下面我们提供两个解决的方案:
方法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中创建数据库成功。
方法2、修改AppServiceProvider.php文件
1、修改App\Providers\AppServiceProvider.php文件
public function boot()
{
//
}
修改为:
use Schema; //引入Schema
public function boot()
{
//
Schema::defaultStringLength(191);
}
Schema::defaultStringLength(191)指定字符集长度
然后再使用php artisan migrate命令创建数据库成功!