php mysql切换版本5.7_phpstudy 升级 MySQL版本到MySQL5.7
#### 起因:我用laravel6做遷移的時候,總是報這個錯誤
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
#### 原因:
Laravel 5.4對默認數據庫字符集進行了更改,現在utf8mb4它包含了對存儲表情符號的支持。這只會影響新的應用程序,只要您運行MySQL v5.7.7及更高版本,就不需要做任何事情。
#### 解決方案:把mysql版本升級到5.8,我用的PHPstudy集成環境
phpstudy默認的mysql版本為5.5的,以下的目錄路徑為我的,實際按照你們自己的來。
還有第二種方法,就是在`項目\app\Providers\AppServiceProvider.php`文件中,修改`boot`方法
```php
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
```
注:異常中明確指明最大長度是767字節,utf8mb4編碼每字符使用4字節,所以 767 / 4 = 191.75,所以將string的默認長度設置為191字符即可
##### 第一步:備份
把當前數據庫下的數據導出來,最好導成SQL文件,并且把D:/PHPstudy/PHPTutorial/MySQL文件夾拷貝一份,萬一升級失敗還可以還原嘛
##### 第二步:到官網下載MySQL5.8的包
傳送門:[MySQL官網](https://dev.mysql.com/downloads/ "MySQL官網")



##### 第三步:新老版本替換
1. 清空D:/PHPstudy/PHPTutorial/MySQL/文件夾,并把剛下載的MySQL5.7的包解壓、解壓下的文件拷貝到D:/PHPstudy/PHPTutorial/MySQL/文件夾下
2. 剛下載的包里面是沒有my.ini配置文件的,所以你可以新建一個,也可以把之前的my.ini復制到D:/PHPstudy/PHPTutorial/MySQL/文件夾下
新建配置文件,格式大概是這樣
[mysqld]
port=3306
skip-grant-tables
basedir="D:/PHPStudy/PHPTutorial/MySQL/"
datadir="D:/PHPStudy/PHPTutorial/MySQL/data/"
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
注意`basedir`和`datadir`的路徑要準確,不能錯
這里有一個小坑,如果你用的是以前的配置文件
如果你配置文件中有`table_cache`和`innodb_additional_mem_pool_size`有這兩個配置的話,
需要把`table_cache`改為`table_open_cache`,
`innodb_additional_mem_pool_size`前面加`#`號注釋掉
##### 第四步:安裝MySQL服務
用cmd命令行,在`D:/PHPStudy/PHPTutorial/MySQL/bin/`執行命令`mysqld install;`

初始化MySQL命令:`mysqld --install;`
啟動MySQL服務命令:`net start mysql;`

注意:若無法啟動,或者啟動后庫內沒有mysql表,則運行:
`mysqld --initialize-insecure --initialize-insecure --user=mysql;`

##### 第五步:修改MySQL密碼
輸入`mysql -uroot -p`執行,會讓你輸入密碼,現在沒有設置密碼,回車就行
然后選擇數據庫`use mysql;`,執行`update user set authentication_string=password('輸入你的密碼') where user='root';`
然后在執行`flush privileges;`

##### 第六步:PHPstudy控制MySQL啟動
如果用PHPstudy無法啟動MySQL

檢查服務是否啟動,打開`任務管理器=>服務`,查找MySQL服務,如果只有一個MySQL服務就手動的啟動,如果有兩個MySQL服務,如`MySQL`和`MySQLa`,就需要刪除一個服務,在`D:/PHPStudy/PHPTutorial/MySQL/bin/`執行`sc delete mysql`就好了。
總結
以上是生活随笔為你收集整理的php mysql切换版本5.7_phpstudy 升级 MySQL版本到MySQL5.7的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oss 视频 转码_播放oss问题的搜索
- 下一篇: mysql frm和ibd怎么恢复数据库