通过一些未知的情况,我在数据库中有一个名为“\”的表。
mysql> show tables like '\\';
+-----------------------------+
| Tables_in_in_realestate (\) |
+-----------------------------+
| \ |
+-----------------------------+
在磁盘上,这些文件称为 @005c。
user@host:mysql/database/$ ls @005c.*
@005c.frm @005c.ibd
我想将它重命名为更易于管理的名称,但我无法在RENAME TABLE
查询中引用它。
mysql> RENAME TABLE `\` TO `backslash`
`> ` <-- it thinks there is an open quote
-> \c <-- so I just cancel the query
我以为我可以用另一个“\”转义“\”,但这似乎也不起作用:
mysql> RENAME TABLE `\\` TO `backslash`;
ERROR 1017 (HY000): Can't find file: './in_realestate/@[email protected]' (errno: 2 - No such file or directory)
如何在RENAME TABLE
查询中引用该表?
不知何故这个查询实际上有效......
两个语句,总共三个反引号 - 两个语句都不能单独工作,但它们以某种方式一起完成了工作。尽管报错。
要在真空中对此进行测试,您可以执行以下操作:
请注意,此命令的语法非常特殊:它是单词“DROP”后跟“TABLE”后跟字符串“
\
;`;” - 即反引号,然后是反斜杠,再次反引号,然后是分号。接下来是空格,然后是(另一个)反引号,最后是分号。