当数据库名称中有一个点(bash 脚本)时,如何清除 SQL Table?

How to clear a SQL Table when Database has a point in its name (bash script)?

脚本在/etc/cron.daily.


当我有 database name = baseNametable = tableName 时,下面用于清空 table 的脚本运行良好:

#!/bin/bash

mysql -u root --password=PASSWD -e "DELETE FROM baseName.tableName"

但我需要在 baseName.fr.value 中重命名数据库,所以我基本上将脚本修改为

#!/bin/bash

mysql -u root --password=PASSWD -e "DELETE FROM baseName.fr.value.tableName"

但是我得到了一个 You have an error in your SQL syntax, check the manual...


那么当数据库名称中有 . 时,正确的语法是什么?

在 MySQL 中,您在数据库、table 或包含特殊字符的列名称周围放置了反引号。

mysql -u root --password=PASSWD -e 'DELETE FROM `baseName.fr.value`.tableName'

请注意,我从双引号改为单引号,因为反引号在双引号内使用时对 shell 具有特殊含义。

参见When to use single quotes, double quotes, and back ticks in MySQL and Difference between single and double quotes in Bash