在windows的DOS視窗下執行mysql命令,insert語句中只要含有漢字資料就出現“data too long for column”錯誤 。 ...
Console下呼叫程式發出的指令是通過一種編碼格式編碼之後傳送出去的字串,接收程式返回的資訊同樣也使用編碼過的字元流。
例如我們要呼叫:
rename 1.txt 測試.txt
dos下把這行命令用某種編碼方式編碼成字串,如果renmae命令接收到這個命令字串,但錯誤的理解了這個命令引數的編碼,或者console傳送這個命令時使用了utf8編碼,而renmae認為是gbk編碼,則該命令會把檔案重新命名成亂碼的名字。(因為中文windows下編碼預設都是gbk,所以我們從來沒遇到過這樣的亂碼問題。在dos視窗左上角右鍵-->屬性,當前內碼表: 936 (ANSI/OEM - 簡體中文 GBK )驗證DOS視窗是GBK編碼傳送字元)
但是,進入mysql命令之後,mysql命令可並不一定知道你傳送的指令是GBK編碼的,它可能認為你傳送的指令是utf8編碼,或者跟資料庫編碼一致的編碼,或者跟某個全域性變數一致的編碼的指令字串( mysql預設用什麼編碼接收指令,我沒有研究清楚,請看官補充 )。所以這時候為了避免mysql誤解你的指令編碼,需要在呼叫mysql的時候加上--default-character-set=gbk 的引數。即 使用 mysql -uroot -p --default-character-set=gbk 登入即可。 注意,不要因為你的資料庫是utf8編碼就使用mysql -uroot -p --default-character-set=utf8去登入。我們這裡說的是dos中發出的指令字串的編碼,dos視窗是不會用utf8編碼去傳送指令的。
當然,假設某個console發出的指令是通過utf8字元編碼的,是不是應該用
mysql -uroot -p --default-character-set=utf8 ?沒有試過,但分析應如此。
為什麼用MYSQL-Front/SQLyog這樣的GUI程式執行同樣的sql就沒有問題呢?在mysql-front/SQLyog登入時,就可以指定連線字符集,我猜想,登入進去之後在SQL編輯框中傳送的SQL指令也許就是通過這個字符集編碼的,如果跟資料庫一致的話,當然沒有問題了。
相關文章
- 在DOS視窗執行java命令中文顯示正常,執行javac命令中文亂碼Java
- 同一個語句在plsql的sql視窗可以執行命令視窗不能執行SQL
- mysql specified key was too long與Index column size too large. The maximum column size is 767 bytes.MySqlIndex
- Windows系統下檢視某一程式下所有執行緒的dos命令Windows執行緒
- 【INSERT】在INSERT插入語句中引入條件限制選項實現資料插入控制
- 如何在Windows下使用DOS命令進入MySQL資料庫?WindowsMySql資料庫
- 基本的Dos命令(cmd視窗)
- Windows DOS窗體下Oracle 資料庫的匯入匯出(IMP/EXP)命令WindowsOracle資料庫
- 在Linux環境下執行DOS命令(轉)Linux
- Laravel 5.4 常見錯誤:Specified key was too longLaravel
- 在windows下檢視oracle錯誤的方法WindowsOracle
- IntelliJ IDEA 執行專案的時候提示 Command line is too long 錯誤IntelliJIdea
- mysql Index column size too large 超過767錯誤解決方案(轉)MySqlIndex
- mysql執行命令報segmentation fault 錯誤MySqlSegmentation
- PbootCMS執行SQL發生錯誤!錯誤:no such column: def1bootSQL
- PbootCMS錯誤提示:執行SQL發生錯誤!錯誤:no such column: def1bootSQL
- 第二課DOS命令列視窗命令列
- Data too long for column 'name' at row 1 mysql的丟擲異常的解決辦法--之前方法不管用-要設定資料庫編碼MySql資料庫
- idea在使用git clone 時出現Filename too long的報錯資訊IdeaGit
- mysql insert語句錯誤問題解決MySql
- 執行遷移檔案報錯 1071 Specified key was too long.
- 升級提示 執行SQL發生錯誤!錯誤:duplicate column name: picstitleSQL
- 刪除大量檔案Argument list too long錯誤解決
- jivejdon3在jboss下執行錯誤
- WIN32下執行緒和視窗的資料繫結Win32執行緒
- LINUX學習(三)在Linux環境下執行DOS命令Linux
- 在資料庫中檢視一個sql語句的執行時間和SP2-0027錯誤資料庫SQL
- JAVA 程式 在 cmd 視窗的執行Java
- pbootcms升級提示 執行SQL發生錯誤!錯誤:duplicate column name: picstitlebootSQL
- 教你在命令列下執行PHP和MySQL命令列PHPMySql
- Oracle資料庫多條sql執行語句出現錯誤時的控制方式Oracle資料庫SQL
- 【懷舊】在 64 位 Windows 中執行 16 位 Windows/DOS 程式Windows
- MySQL資料庫index column size too large. the maximum column size is 767 bytes問題解決MySql資料庫Index
- shell 下執行mysql 命令MySql
- Spring Boot Intellij 執行應用的時候 Command line is too long. Shorten command line for 錯誤Spring BootIntelliJ
- 在windows資源管理器新增進入當前目錄dos視窗的快捷選單Windows
- java在windows下執行JavaWindows
- 在dos下使用簡單的ftp命令FTP