這是因為timeout.
請修改相關參數. 例如:
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_net_read_timeout
改為6000秒.
沒注意到上面的連結.
找到問題了 我把max_allowed_packet下在[mysqldump]
結果輸出輸入是不同的,變成沒有生效
但是很怪的是 整個DB在mariadb佔空間變少了
InnoDB latin1_swedish_ci 1.3 GB
mysql卻比較大
InnoDB utf8_general_ci 1.5 GB
latin1_swedish_ci 是單位元
utf8_general_ci 是1~4位元, 非ASCII語系至少會佔2位元.
語言編碼別弄錯了. 會損失資料的.
原table移轉前81萬筆id 移轉後73萬筆
看來是有錯誤,不過跟語言編碼無關. 應該要有錯誤訊息的.
試著執行:
mysql -u root -p dbname -f < xxx.sql
-f 表示force, 應該會把錯誤顯示在螢幕上.
要先清空資料庫
加 -f參數並未出現任何錯誤
我試過預設latin1_swedish_ci 開新資料庫
跟utf8_general_ci開新資料庫
出來的結果最多匯入1.4G 還是感覺有少
查出來結果是這樣,移轉後少了將近100MB資料量
mysql 1495.80 MB
mariadb 1400.24 MB
不知道是不是mysql5移轉mariadb10差距太多了
用diff比較兩個mysqldump的結果看看
測過備份--all-databases;已經相當接近原始數據了,少了大概15MB左右,但是只備份單一資料庫
再倒回mariadb就會發生資料上少了100多MB
而且跟我說的資料庫名稱問題看起來無關
mysql轉mariadb10問題真難解@@
分別對兩個資料庫做mysqldump, 再用diff比較. 參考指令:
$ mysqldump <dbname> -uroot -p --no-create-info --no-create-db --extended-insert=FALSE > backup01.sql
$ mysqldump <dbname> -uroot -p --no-create-info --no-create-db --extended-insert=FALSE > backup02.sql
其中extended-insert=FALSE是逐筆列出.$diff backup01.sql backup02.sql
看看是那些資料不見.
之前我遇過的是因為中文字元出問題.
目前測試的情況 mysql 5.5> mysql5.5 資料還原應該算正常
直接移除mysql裝mariadb5.5,觀察資料正常
但是mariadb5.5 不管怎麽mysqldump sql檔都會0K 指令很快執行結束但是沒有跳出錯誤
看來資料不太相容
我看問題是有可能原始的資料庫table就有損毀的問題導致無法還原
MyISAM跟InnoDB併用,還有資料庫名稱的問題
導致還原不斷的出狀況,程式人的想法有些跟我不一樣
資訊庫預設InnoDB他們還是會去用MyISAM
不知道有沒有辦法直接對sql備份檔將所有引擎全部統一改Innodb
基本上未必是少資料 因為備份還原的過程都未出錯
有可能是phpmyadmin新版設計邏輯不同導致有些資料看不到
比方說開一個table 4.8版的預設值是SELECT * FROM abc
在4.4不排序之下 SELECT * FROM abc
ORDER BY created_time
DESC
自動幫你加入排序了
而且資料列數4.4顯示全部列數
4.8卻顯示一個含糊的數字 ~4,929,783要每一個點開來才會慢慢累加顯示正確列數
導致一直覺得有少資料,這些大版本改變之後很多有什麼大變化阿
用MyISAM的工程師應該是來自2013年以前?
沒辦法 我家的php仁兄還說用innodb是亂搞= =
MyISAM不支援Transaction和Foreign Key! 這是資料庫應用程式的基本.
你是用什麼軟體移轉的?
還是怎麼移轉的?
以下做法有試過嗎? 有問題再說~
https://blog.csdn.net/lovemysea/article/details/79121154