這篇文章將為大家詳細(xì)講解有關(guān)MySQL SOURCE報(bào)錯(cuò)ERROR: ASCII怎么辦,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),麻陽企業(yè)網(wǎng)站建設(shè),麻陽品牌網(wǎng)站建設(shè),網(wǎng)站定制,麻陽網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,麻陽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
由 ASCII '\0' 引起的MYSQL SOURCE錯(cuò)誤
有一個(gè)朋友給出一個(gè)錯(cuò)誤:
source test.sql
ERROR:
ASCII '\0' appeared in the statement, but this is not allowed unless option
--binary-mode is enabled and mysql is run in non-interactive mode. Set --bin
ary-mode to 1 if ASCII '\0' is expected. Query: ''.
以前沒見過這個(gè)錯(cuò)誤,于是仔細(xì)看了一下。先根據(jù)報(bào)錯(cuò)查看--binary-mode的意思:
--binary-mode By default, ASCII '\0' is disallowed and '\r\n' is
translated to '\n'. This switch turns off both features,
and also turns off parsing of all clientcommands except
\C and DELIMITER, in non-interactive mode (for input
piped to mysql or loaded using the 'source' command).
This is necessary when processing output from mysqlbinlog
that may contain blobs.
意思就是ASCII '\0' 是不允許的,除非在binary mode下,為什么會(huì)不允許呢?
原因在于一個(gè)存文本模式的sql腳本不可能存在'\0','\0'對(duì)應(yīng)ASCII的00,NUL,
我們知道在純文本模式下,任何字符都對(duì)應(yīng)自己的編碼,即使是空格、換行、回車、制表符等
,00 NUL只會(huì)在二進(jìn)制模式的文件中才有,當(dāng)使用非交互模式的時(shí)候,比如
在mysqlbinlog|mysql -u root -p 時(shí)候是用會(huì)關(guān)閉,但是我測(cè)試了一下也不行
不管使用pipe管道還是重定向都不行:
[root@testmy ~]# cat test.sql|/mysqldata/mysql5.7/bin/mysql --socket=/mysqldata/mysql5.7/mysqld3307.sock
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.
[root@testmy ~]# /mysqldata/mysql5.7/bin/mysql --socket=/mysqldata/mysql5.7/mysqld3307.sock <test.sql ="" ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.
也許這種方式只有在導(dǎo)入ROW格式的binlog才會(huì)用到吧。
下面是重現(xiàn)方式,簡(jiǎn)單的代碼:
#include
#include
int main(void)
{
FILE* fd;
char a='\0';
if(!(fd = fopen("test.sql","a+")))
{
perror("error:");
exit(1);
}
fputc(a,fd);
fputc('\n',fd);
fclose(fd);
}
向test.sql寫入一個(gè)\0即可,就可以重現(xiàn)了。下面是一個(gè)ASCII部分控制字符的截圖
關(guān)于“MYSQL SOURCE報(bào)錯(cuò)ERROR: ASCII怎么辦”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
本文題目:MYSQLSOURCE報(bào)錯(cuò)ERROR:ASCII怎么辦
網(wǎng)站URL:http://aaarwkj.com/article36/peijpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、網(wǎng)站制作、ChatGPT、電子商務(wù)、搜索引擎優(yōu)化、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)