日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

php mysql切换版本5.7_phpstudy 升级 MySQL版本到MySQL5.7

發(fā)布時(shí)間:2025/4/17 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php mysql切换版本5.7_phpstudy 升级 MySQL版本到MySQL5.7 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#### 起因:我用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)")

![](/uploads/editor/image/20200401/JKahIT2jeZp0LR3clFmZxfQFIuS8Kw1FXH47K840.png)

![](/uploads/editor/image/20200401/4dBrAu692DVepE1TSG4jzp0EpC21RmwV5WtqsDSO.png)

![](/uploads/editor/image/20200401/9slLUDHVN1idopAPeb4EsvBRQMOUVJ4SbkxQrRhD.png)

##### 第三步:新老版本替換

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;`

![](/uploads/editor/image/20200401/lz3hWalHrUwGh7XdsmIB7Ytg3AiqLPl3gheTlynN.png)

初始化MySQL命令:`mysqld --install;`

啟動(dòng)MySQL服務(wù)命令:`net start mysql;`

![](/uploads/editor/image/20200401/jdPIptyOCdHTXrtmCnmedmGD5WL9j3LDfUyYZibk.png)

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

`mysqld --initialize-insecure --initialize-insecure --user=mysql;`

![](/uploads/editor/image/20200401/EAIlY1nKs3ipDLKCGXph8OgEGnv7QGdxVj6IIaGw.png)

##### 第五步:修改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;`

![](/uploads/editor/image/20200401/IoHwqt5WPMkBl38gJR7G0l8SEa3gnxRUKoibdsMW.png)

##### 第六步:PHPstudy控制MySQL啟動(dòng)

如果用PHPstudy無(wú)法啟動(dòng)MySQL

![](/uploads/editor/image/20200401/sioQlCX7cbWwSErGRRd4Bg2z1HUaB6qA9RlqI9l3.png)

檢查服務(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。