2017-02-28 81 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,通过它我已经在字符串中隐藏了“/”。 –

相关问题