包含 $ 字符的 SQL 语句成功通过 MariaDB

包含 $ 字符的 SQL 语句成功通过 MariaDB

我已经研究了几天的 mysqlbinlog 恢复问题,我发现它是由一些包含 $ 字符的不完整的 SQL 语句引起的。

以下 SQL 语句记录到通用日志中,并且也会出现在二进制日志中:

delete from build_type$
insert into build_type$ values ('bt3') 
delete from vcs_root_instance$

为什么这些语句会传递(包含 $ 符号)。数据库包含没有 $ 符号的表 - build_type、vcs_root_instance?

desc build_type;
+-------------------+-------------+------+-----+---------+-------+
| Field             | Type        | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| int_id            | varchar(80) | NO   | PRI | NULL    |       |
| config_id         | varchar(80) | NO   | UNI | NULL    |       |
| origin_project_id | varchar(80) | YES  |     | NULL    |       |
| delete_time       | bigint(20)  | YES  |     | NULL    |       |
+-------------------+-------------+------+-----+---------+-------+

MariaDB 版本:10.2.23

答案1

如果数据库、表和列名称包含大多数特殊字符(包括$),请使用反斜杠。(下划线也可以。)例如:

delete from `build_type$`

更好的是,不要使用$

相关内容