当数据库名称中有一个点(bash 脚本)时,如何清除 SQL Table?
How to clear a SQL Table when Database has a point in its name (bash script)?
脚本在/etc/cron.daily
.
当我有 database name = baseName
和 table = 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。
脚本在/etc/cron.daily
.
当我有 database name = baseName
和 table = 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。