mysql - 如何从 .sh 脚本中截断表?

标签 mysql sql linux

我有这个 .sh 脚本来优化表

#!/bin/sh 
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/optimize.sql

...以及optimize.sql 中的此sql

OPTIMIZE TABLE `this_table` 

一切正常。

现在我正在做同样的事情来截断一个表:

#!/bin/sh 
mysql -u'user' -p'pwd' -D'db' </var/www/vhosts/mydomain/httpdocs/truncate.sql

...以及 truncate.sql 中的此 sql

TRUNCATE TABLE `this_table`

...但是它不起作用!怎么了?

附言我使用 Crontab 每 x 分钟运行一次 .sh,这仅适用于优化

最佳答案

您也可以使用文件来存储 mysql 凭据,例如:

nano .my.cnf

并添加以下内容:

[mysql]
user=your_user
password=the_super_secret_password

然后像这样在你的 shell 脚本中执行你的 SQL 语句:

#!/bin/bash
`mysql --defaults-file=/path/to/.my.cnf -e "truncate table this_table;"`

为什么要将凭据放在单独的文件中? 这样一来,当需要更改密码时,您拥有的所有使用这些凭据的 shell 脚本都不必单独更新。

关于mysql - 如何从 .sh 脚本中截断表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18844745/

相关文章:

mysql - 以太坊余额的MySQL表类型

mysql - 将在 "WHERE"子句中使用的每个 MYSQL 字段都应该有一个索引吗?

sql - MySQL:将主键返回为空

mysql - 从搜索记录中获取搜索次数最多的术语,忽略任何用户在给定时间范围(小时)内对搜索术语的任何重复条目

linux - 使用 shell 脚本从文件中提取唯一的行 block

mysql - 从存储的描述生成查询的 SQL 脚本

php - MissingConnectionException 在 AppFog 上通过 mysql 隧道运行 CakePHP

SQL 从查询中的数据中选择该数据不在数据库中的数据?

linux - 如何 Grep 信息和结果在列中(Linux)

linux - 如果 Windows 应用程序无法在其上运行,WSL 有什么好处?