Mysql創(chuàng)建視圖中文亂碼如何修改docker里的配置
問題現(xiàn)象:
創(chuàng)建的視圖查詢無數(shù)據(jù),查看創(chuàng)建語句得知,where條件里的中文變成了“???”。

在客戶端里查詢字符編碼:
show VARIABLES like '%char%';

就是character_set_server導(dǎo)致的,它配置的竟然不是utf8,因為他默認就是這個latin1!
踩坑記錄:
我在客戶端寫了個這個命令:
set character_set_server ='utf8';
表面上再次查詢編碼確實是變成utf8了,實際上根本不起作用,重啟mysql服務(wù)也不會起作用!
解決辦法:
我的這個mysql是用docker啟動的,所以先登錄服務(wù)器,找到容器:
docker ps -a

溫馨提示(踩坑記錄):注意要加-a查詢所有的容器,要不然如果容器Exited狀態(tài)就查不到它了,比如:

進入容器里,修改my.cnf文件
備注:Windows系統(tǒng)里的mysql,其配置文件叫做my.ini;Linux系統(tǒng)里的mysql,其配置文件叫做my.cnf,一般存放在 /etc/my.cnf或者/etc/mysql/my.cnf路徑下。
docker exec -it 2654b151f48c /bin/bash

踩坑記錄:一定要加上-it ,要不然沒法進入容器,繼續(xù)操作可就是服務(wù)器上的文件了(我這樣干過,還疑惑為啥重啟不生效,(ˉ▽ˉ;)…)
修改my.cnf文件,在[mysqld]下方加上配置:
character_set_server=utf8 init_connect='SET NAMES utf8'
劃重點:一定要在[mysqld]下方加,要不然可能不會生效!
原因:配置文件中的啟動選項被劃分為若干個組,每個組有一個組名,用中括號[]擴起來。
參考文章:mysql配置文件的使用
踩坑記錄:
因為容器里沒有vim和vi命令,突發(fā)奇想使用了echo 命令直接往文件后面追加,也沒有注意到?jīng)]放在[mysqld]組下面,所以重啟后配置一直不生效。
使用echo命令的話:
echo "xxx" >> a.txt ——把xxx追加到a.txt文件最后面 echo "xxx" > a.txt ——把xxx覆蓋到a.txt文件里
所以最后意識到以后,使用了>才得以糾正。
重啟mysql服務(wù)
我使用的是docker命令重啟的服務(wù),主從服務(wù)器分別重啟:

再次用客戶端查看編碼,已經(jīng)是utf8了,服務(wù)上創(chuàng)建的視圖也沒有出現(xiàn)亂碼情況:

到此這篇關(guān)于Mysql創(chuàng)建視圖中文亂碼如何修改docker里的配置的文章就介紹到這了,更多相關(guān)Mysql創(chuàng)建視圖中文亂碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 中 HAVING 子句的深度解析與實戰(zhàn)攻略
本文深入解析MySQL中HAVING子句的使用,HAVING用于分組后過濾,它作用于GROUP BY分組后的結(jié)果集,允許我們基于聚合函數(shù)的結(jié)果進行條件篩選,感興趣的朋友跟隨小編一起看看吧2025-10-10
mysql數(shù)據(jù)庫之count()函數(shù)和sum()函數(shù)用法及區(qū)別說明
這篇文章主要介紹了mysql數(shù)據(jù)庫之count()函數(shù)和sum()函數(shù)用法及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
MySQL數(shù)據(jù)庫優(yōu)化與定期數(shù)據(jù)處理策略
在當(dāng)今數(shù)據(jù)驅(qū)動的時代,數(shù)據(jù)庫作為信息存儲和管理的核心,扮演著至關(guān)重要的角色,本文將探討如何通過一系列有效的策略來優(yōu)化 MySQL 數(shù)據(jù)庫的查詢效率,并實現(xiàn)定期處理數(shù)據(jù)的機制,以確保主表中的數(shù)據(jù)保持在合理范圍內(nèi),需要的朋友可以參考下2025-03-03

