2017-02-28 80 views
0

table_name:Jm™-Í€hÀÂ}#'ÇÊμf 如何使用unicode字符串作爲表名在mysql中創建表?

我想在mysql5中用table_name創建一個表。 ID,NAME是表中給出的列名。是否有可能創建?

「您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近「\ x0fJm \ ufffd \ X12 \ ufffd \ u0340 \ x11h \ ufffd \ ufffd}#正確的語法手冊(ID INT,NAME VARCHAR(10),'at line 1「)

+0

我想在將表名存儲到雲服務器之前對其進行加密,以便增強安全性(消除時間因素)並且我有元數據來解密它 –

回答

0

在困惑了很多之後,我簡單地將整個字符串轉換爲BASE32格式,因爲它的字符集包含在MySQL中作爲表名接受的值,但是應該對輸出字符串的長度有限制,否則「 「將被添加到字符串的末尾。

1

建議您帶走HEX()的加密字符串。這將避免任何可能導致致命錯誤的討厭字符 - 如空格,零字節,斜槓,反斜槓,引號,退格,...

我檢查BASE64,但它有一個潛在的嚴重問題,因爲它包括「/」

+0

如果我們考慮字符串table_name的十六進制值,這是在問題中提到然後輸出字符串的長度超過64字節,這是不允許作爲表名稱在sql –

+0

您需要放棄的東西 - 無論是一些字節或長度。 –

+0

感謝里克詹姆斯,爲BASE64的想法。我沒有將它轉換成BASE64,而是將它轉換成了BASE32,通過它我已經在字符串中隱藏了「/」。 –

相關問題