1. 程式人生 > >MySQL修改資料庫表的預設空間配置(兩種方式實現)

MySQL修改資料庫表的預設空間配置(兩種方式實現)

一:問題背景介紹.

     1. MySQL插入1000W條資料的時候因資料量大於單表預設資料量而報錯.(MySQL 5.7)

            com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4232009 > 4194304). You can change this value on the server by setting the max_allowed_packet’ variable.

            描述:說明單表的預設儲存空間存不下了,導致資料寫入單表失敗了,需要修改預設的儲存空間大小為更大的.

      2. MySQL的單表預設儲存大小.

              MYSQL預設的儲存空間大小是:4194304/1024/1024=4M.

                                                   (方式一:基於MySQL命令列的修改方式)

      3. Navicat下檢視單表的預設大小.

          show VARIABLES like 'max_allowed_packet';

                       

     4. 修改預設的單表儲存大小.(這裡以修改為10M為例進行測試).

          set global max_allowed_packet=10*1024*1024;

            

          現在查詢一下大小.(發現沒有生效).

             

          關閉這個視窗重新登入一下Navicat的命令列介面.(關鍵)10485760/1024/1024=10M

             

          但是現在檢視MySQL的配置檔案發現max_allowed_packet還是預設的4M,因為是臨時生效,並未修改配置檔案.          

                                                 (方式二:基於配置檔案的修改方式)

     還可以通過配置檔案的方式來修改:MySQL服務的路徑下修改

   

   如果修改會提示拒絕訪問的.(出於MySQL伺服器安全性考慮).

  賦予修改許可權即可.

 點選應用->確定.

 

然後修改my.ini檔案.配置檔案向下找到max_allowed_packet配置項.

因為修改了配置檔案,所以要重新啟動一下MySQL服務,使配置生效(開啟工作管理員,點選下面的選單條最右邊的服務).

重新啟動完畢後,可以在客戶端測試一下了,發現現在是15M了.(15728640/1024/1024=15M)

對比:

       相比於第一種使用MySQL命令列修改的方式更方便一下,但是如果MySQL伺服器要重新啟動就失效了,要在使用的時候在重新設定一下.

       第二種修改在重啟MySQL時指定配置檔案可以永久生效的.(Linux下).

       至此基於MySQL修改單表儲存空間兩種方式已測試完成通過.