mysql執行sql指令碼報錯ERROR 1366 (HY000) 解決

花花蘑菇發表於2016-11-18
mysql執行sql指令碼是有兩種方式:
方式1:
在控制檯下,進入mysql的bin目錄,
mysql -u user -p"password" -P 3308 -D testdb < d:\test\test.sql
這裡的test.sql是待執行的sql指令碼,記得要寫絕對路徑。
方式2:
進入mysql的執行命令列下,用source命令執行:
Mysql>source  d:\test\test.sql

Mysql>\.  d:\test\test.sql

問題:
用方式1執行sql指令碼時,報錯如下:

網上查了這個錯誤,是字符集方面的。但是,當我嘗試把test.sql裡的sql語句分開一條一條在Navicat客戶端上執行,或者用以下方式執行:
mysql -u user -p"password" -P 3308 -D testdb -e "update ** set  col1="中文";"
發現全部都執行成功了。
這說明sql指令碼本身自己是沒有問題的。所以問題可能出在sql指令碼的編碼格式上。
經過檢查發現,因為我的sql指令碼是用txt編寫,儲存時預設編碼格式是ansi。於是重新儲存,如下:

選擇編碼格式為utf8。再次執行,成功。

注:如果待執行的sql指令碼中含有中文字元,需要注意指令碼的編碼格式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28497416/viewspace-2128698/,如需轉載,請註明出處,否則將追究法律責任。

相關文章