电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Windows 服務(wù)器中使用 mysqldump 命令導(dǎo)出數(shù)據(jù)中文亂碼問(wèn)題的解決方案

瀏覽:149日期:2023-02-28 17:21:52
目錄
  • 起因
  • 解決辦法
    • 檢查編碼
    • 解決方案一(不適用)
    • 解決方案二(不可行)
    • 最終方案

起因

環(huán)境:阿里云服務(wù)器(windows server)、mysql(8.0.11)

mysql> select @@version;+-----------+| @@version |+-----------+| 8.0.11    |+-----------+1 row in set

在windows服務(wù)器中每天備份一次數(shù)據(jù)庫(kù)數(shù)據(jù),防止出現(xiàn)各種意外。這里就使用了mysql的 mysqldump 服務(wù)來(lái)導(dǎo)出備份,備份初始腳本如下

@echo offset hour=%time:~0,2%if "%time:~0,1%"==" " set hour=0%time:~1,1%set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%echo %now%set host=127.0.0.1set port=3306set user=rootset pass=馬賽克# 要備份的數(shù)據(jù)庫(kù),這里我項(xiàng)目的數(shù)據(jù)庫(kù)是 xxx_projectset dbname=xxx_project# 備份文件所在的位置,這里我固定放在 C:\MysqlDataBackups\ 下面,%dbname%-%now%.sql 是要生成的文件名稱set backupfile=C:\MysqlDataBackups\%dbname%-%now%.sql# 運(yùn)行備份命令 C:\mysql-8.0.11-winx64\bin\mysqldump 是我 mysql 安裝目錄下 mysqldump 所在的位置"C:\mysql-8.0.11-winx64\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile%echo delete files before 10 daysforfiles /p E:\MysqlDataBackups /s /m *.sql /d -60 /c "cmd /c del @file /f"@echo on

命令保存為 bat 文件,雙擊執(zhí)行,能成功在 C:\MysqlDataBackups\ 下面生成一個(gè)文件

但是,當(dāng)我們打開(kāi)文件看的時(shí)候,發(fā)現(xiàn)里面的備注,中文相關(guān)的都是亂碼(PS:Notepad++ 軟件打開(kāi)不會(huì),可能是因?yàn)檫@個(gè)軟件比較智能)

解決辦法

檢查編碼

  • 這里為了防止我們數(shù)據(jù)庫(kù)編碼不對(duì),我們先用命令查看數(shù)據(jù)庫(kù)編碼,這里可以看到編碼都是正常的, 主要字段是 character_set_results 的編碼
mysql> show variables like "%char%";+--------------------------+----------------------------------------+| Variable_name    | Value  |+--------------------------+----------------------------------------+| character_set_client     | utf8   || character_set_connection | utf8   || character_set_database   | utf8mb4|| character_set_filesystem | binary || character_set_results    | utf8   || character_set_server     | utf8mb4|| character_set_system     | utf8   || character_sets_dir       | C:\mysql-8.0.11-winx64\share\charsets\ |+--------------------------+----------------------------------------+8 rows in set

上面幾個(gè)變量說(shuō)明:

  • character_set_client: 設(shè)置客戶端使用的字符集。
  • character_set_connection: 連接數(shù)據(jù)庫(kù)的字符集設(shè)置類型,如果程序沒(méi)有指明連接數(shù)據(jù)庫(kù)使用的字符集類型則按照服務(wù)器端默認(rèn)的字符集設(shè)置。
  • character_set_database: 設(shè)置數(shù)據(jù)庫(kù)服務(wù)器中某個(gè)庫(kù)的字符集。
  • character_set_filesystem: 設(shè)置文件系統(tǒng)的字符集。
  • character_set_results: 設(shè)置服務(wù)端返回給客戶端結(jié)果顯示使用的字符集。
  • character_set_server: 設(shè)置服務(wù)器安裝時(shí)指定的默認(rèn)字符集。
  • character_set_system: 設(shè)置數(shù)據(jù)庫(kù)系統(tǒng)使用的字符集。

如果上面編碼不對(duì)的話,想快速設(shè)置的話執(zhí)行:set character_set_results = utf8;

上面這個(gè)只在當(dāng)前終端有效,如果想永久保存的話還是需要修改my.ini的配置文件。

解決方案一(不適用)

網(wǎng)上很多說(shuō)法是 Windows PowerShell 輸出重定向 (“>”) 文件編碼默認(rèn)為UTF-16(LE)問(wèn)題,解決辦法都是把命令拿去 cmd 中執(zhí)行 ,但是我們這里是寫成腳本了,在cmd中執(zhí)行是手動(dòng)執(zhí)行,雖然不是亂碼,但是我們放在腳本中執(zhí)行就出現(xiàn)亂碼了,這個(gè)辦法顯然對(duì)于我來(lái)說(shuō)是不可行的。

mysqldump -uroot -p --add-drop-table xxx_project > D:\xxx.sql

解決方案二(不可行)

還有的文章說(shuō)在導(dǎo)出的命令上加上各種編碼參數(shù),如:--default-character-set=utf8

mysqldump -uroot -proot --add-drop-table --default-character-set=utf8 xxx_project > D:\xxx.sql

在網(wǎng)上發(fā)現(xiàn)另一個(gè)參數(shù)--hex-blob, 這個(gè)參數(shù)主要是為了把BINARY, VARBINARY, BLOB, BIT等類型導(dǎo)出為十六進(jìn)制,因?yàn)檫@些類型比較容易亂碼。再次嘗試:

mysqldump -uroot -proot --add-drop-table --default-character-set=utf8 --hex-blob xxx_project > D:\xxx.sql

打開(kāi)文件后依然亂碼

最終方案

  • 最后在MySQL官網(wǎng)找到一段 mysqldump 相關(guān)的說(shuō)明,在這段代碼中找到了解決方案(https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)

這段話翻譯過(guò)來(lái)就是:

說(shuō)明:

在Windows上使用帶有輸出重定向的PowerShell生成的轉(zhuǎn)儲(chǔ)文件將創(chuàng)建一個(gè)具有UTF-16編碼的文件:

mysqldump [options] > dump.sql

但是,UTF-16不允許作為連接字符集(請(qǐng)參閱不允許的客戶端字符集),因此無(wú)法正確加載轉(zhuǎn)儲(chǔ)文件。要解決這個(gè)問(wèn)題,使用——result-file選項(xiàng),它會(huì)創(chuàng)建ASCII格式的輸出:

mysqldump [options] --result-file=dump.sql

  • 最后執(zhí)行的命令 --result-file 不會(huì)創(chuàng)建文件。所以我們要提前創(chuàng)建 xxx.sql 文件,每次執(zhí)行都會(huì)清空 xxx.sql 里面的文件內(nèi)容,然后重新寫入數(shù)據(jù)到文件中
mysqldump -uroot -proot --add-drop-table --default-character-set=utf8 --hex-blob xxx_project --result-file=C:\MysqlDataBackups\xxx.sql
  • 解決辦法找到了,但是光是這樣執(zhí)行,還達(dá)不到我們備份的目的,于是結(jié)合腳本,最終修改為:
@echo offset hour=%time:~0,2%if "%time:~0,1%"==" " set hour=0%time:~1,1%set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%echo %now%set host=127.0.0.1set port=3306set user=rootset pass=馬賽克# 要備份的數(shù)據(jù)庫(kù),這里我項(xiàng)目的數(shù)據(jù)庫(kù)是 xxx_projectset dbname=xxx_project# 備份文件所在的位置,這里我固定放在 C:\MysqlDataBackups\ 下面,%dbname%-%now%.sql 是要生成的文件名稱set backupfile=C:\MysqlDataBackups\%dbname%-%now%.sql#用 bat 命令先創(chuàng)建文件 backupfile,然后在用 mysqldump 往這個(gè)文件中 寫入數(shù)據(jù)echo=>%backupfile%"C:\mysql-8.0.11-winx64\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% --default-character-set=utf8 --hex-blob -c --add-drop-table %dbname% --result-file=%backupfile%echo delete files before 10 daysforfiles /p E:\MysqlDataBackups /s /m *.sql /d -60 /c "cmd /c del @file /f"@echo on

最后看看效果

最后我們用 windows 的定時(shí)任務(wù)在每天凌晨三點(diǎn)的時(shí)候執(zhí)行這個(gè) bat 腳本,就能做到一天備份一次數(shù)據(jù)庫(kù)拉。

到此這篇關(guān)于Windows 服務(wù)器中使用 mysqldump 命令導(dǎo)出數(shù)據(jù),解決中文亂碼問(wèn)題的文章就介紹到這了,更多相關(guān)Windows使用mysqldump導(dǎo)出數(shù)據(jù)中文亂碼內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: Windows IIS
主站蜘蛛池模板: 法兰连接型电磁流量计-蒸汽孔板节流装置流量计-北京凯安达仪器仪表有限公司 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 上海诺狮景观规划设计有限公司 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 北京普辉律师事务所官网_北京律师24小时免费咨询|法律咨询 | 耐磨焊丝,堆焊焊丝,耐磨药芯焊丝,碳化钨焊丝-北京耐默公司 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 学习安徽网 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | CPSE安博会| 铝镁锰板_铝镁锰合金板_铝镁锰板厂家_铝镁锰金属屋面板_安徽建科 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 天津云仓-天津仓储物流-天津云仓一件代发-顺东云仓 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 首页_欧瑞传动官方网站--主营变频器、伺服系统、新能源、软起动器、PLC、HMI | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 锤式粉碎机,医药粉碎机,锥式粉碎机-无锡市迪麦森机械制造有限公司 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 沥青灌缝机_路面灌缝机_道路灌缝机_沥青灌缝机厂家_济宁萨奥机械有限公司 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 三效蒸发器_多效蒸发器价格_四效三效蒸发器厂家-青岛康景辉 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 仓储笼_仓储货架_南京货架_仓储货架厂家_南京货架价格低-南京一品仓储设备制造公司 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 |