Mysql

帶有特殊字元的 MySQLDump 問題

  • March 21, 2017

程式碼:使用測試;

CREATE TABLE Test_user(使用者名 VARCHAR(15),路徑 VARCHAR(100));

INSERT INTO Test_user VALUES(’new1’,‘C:\newfolder\one.xlsx’); INSERT INTO Test_user VALUES(’new1’,‘C:/newfolder/one.xlsx’);

我使用 MySQLDump 創建了一個 .sql 文件,其中包含內容

文件名:Table1.sql

如果存在則刪除表test_user;/*!40101 SET @saved_cs_client = @@character_set_client /; / !40101 SET character_set_client = utf8 /; 創建表test_userUsernamevarchar(15)預設空值, pathvarchar(100)預設空值)引擎=InnoDB預設字元集=latin1;/ !40101 SET character_set_client = @saved_cs_client */;

鎖定表test_user寫入;/!40000 更改表test_user禁用鍵/; 插入test_user值 (’new1’,‘C:\newfolderone.xlsx’),(’new1’,‘C:/newfolder/one.xlsx’); /* !40000 ALTER TABLEtest_user啟用鍵 */; 解鎖表;

在上面的 Table1.sql 文件 (’new1’,‘C:\newfolderone.xlsx’) 反斜杠之前 one.xlsx 沒有顯示,在嘗試執行這個文件時,我得到這樣的輸出

new1 C:ewfolderone.xlsx new2 C:/newfolder/one.xlsx

在根本不顯示 \ 的地方,建議我如何解決它以及像這個反斜杠這樣的特殊字元會產生這種錯誤。

提前致謝..

您應該閱讀MySQL 中的字元串文字

在那裡您將了解到反斜杠字元用於轉義一些特殊字元串,並且要在字元串中使用文字反斜杠(如在 Windows 路徑名中),您必須將它們加倍:

INSERT INTO test_user VALUES ('new1','C:\\newfolderone.xlsx');

需要特殊處理的字元的完整列表在上面的連結中。

但是,最好讓中間語言來處理這些問題。例如,在 PHP 中你會呼叫PDO::quote; 其他平台和語言提供類似的設施。

引用自:https://dba.stackexchange.com/questions/167735