php mysql切换版本5.7_phpstudy 升级 MySQL版本到MySQL5.7
#### 起因:我用laravel6做遷移的時(shí)候,總是報(bào)這個(gè)錯(cuò)誤
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
#### 原因:
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及更高版本,就不需要做任何事情。
#### 解決方案:把mysql版本升級(jí)到5.8,我用的PHPstudy集成環(huán)境
phpstudy默認(rèn)的mysql版本為5.5的,以下的目錄路徑為我的,實(shí)際按照你們自己的來。
還有第二種方法,就是在`項(xiàng)目\app\Providers\AppServiceProvider.php`文件中,修改`boot`方法
```php
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字符即可
##### 第一步:備份
把當(dāng)前數(shù)據(jù)庫(kù)下的數(shù)據(jù)導(dǎo)出來,最好導(dǎo)成SQL文件,并且把D:/PHPstudy/PHPTutorial/MySQL文件夾拷貝一份,萬(wàn)一升級(jí)失敗還可以還原嘛
##### 第二步:到官網(wǎng)下載MySQL5.8的包
傳送門:[MySQL官網(wǎng)](https://dev.mysql.com/downloads/ "MySQL官網(wǎng)")



##### 第三步:新老版本替換
1. 清空D:/PHPstudy/PHPTutorial/MySQL/文件夾,并把剛下載的MySQL5.7的包解壓、解壓下的文件拷貝到D:/PHPstudy/PHPTutorial/MySQL/文件夾下
2. 剛下載的包里面是沒有my.ini配置文件的,所以你可以新建一個(gè),也可以把之前的my.ini復(fù)制到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`的路徑要準(zhǔn)確,不能錯(cuò)
這里有一個(gè)小坑,如果你用的是以前的配置文件
如果你配置文件中有`table_cache`和`innodb_additional_mem_pool_size`有這兩個(gè)配置的話,
需要把`table_cache`改為`table_open_cache`,
`innodb_additional_mem_pool_size`前面加`#`號(hào)注釋掉
##### 第四步:安裝MySQL服務(wù)
用cmd命令行,在`D:/PHPStudy/PHPTutorial/MySQL/bin/`執(zhí)行命令`mysqld install;`

初始化MySQL命令:`mysqld --install;`
啟動(dòng)MySQL服務(wù)命令:`net start mysql;`

注意:若無(wú)法啟動(dòng),或者啟動(dòng)后庫(kù)內(nèi)沒有mysql表,則運(yùn)行:
`mysqld --initialize-insecure --initialize-insecure --user=mysql;`

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

##### 第六步:PHPstudy控制MySQL啟動(dòng)
如果用PHPstudy無(wú)法啟動(dòng)MySQL

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