我正在尝试删除其中包含特殊字符 (!`) 的数据库。
MySQL [test]> show databases;
+-------------------------+
| Database |
+-------------------------+
| d1 |
| d2 |
| db1`; select 'oops!' |
MySQL [test]> drop database `db1\`\; select \'oops!\'`;
ERROR: Unknown command '\;'.
ERROR: Unknown command '\''.
ERROR: Unknown command '\''.
`> Ctrl-C -- exit!
Aborted
MySQL [test]> drop database "db1`; select 'oops!'";
ERROR 1064 (HY000): [33792] syntax error: syntax error near ""db1`; select 'oops!'""
LINE: drop database "db1`; select 'oops!'"
^
我尝试转义这些字符,但它并没有删除我。包含双引号会引发语法错误。我尝试了 MySQL 5.6/5.7。
最佳答案
要转义反引号,您需要将其加倍(请参阅 manual )。其他字符不需要转义:
DROP DATABASE `db1``; select 'oops!'`
如果您可以控制SQL_MODE
,则可以设置ANSI_QUOTES
并将字符串括在双引号中:
SET SQL_MODE = 'ANSI_QUOTES';
DROP DATABASE "db1`; select 'oops!'"
关于mysql - 删除带有感叹号和反引号的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61095778/