我想用bash而不是mysql终端直接更新一些表。
通常的方法是在bash中用here doc string添加sql命令。
mysqlword="xyzzy"
tmpdb="yyyy"
mysql -u root -p$mysqlword <<EOF
USE ${tmpdb};
UPDATE wp_posts SET post_content = replace(post_content, 'domain1', 'domain2');
EOF
尝试另一种方法来做同样的工作。
mysqlword="xyzzy"
tmpdb="yyyy"
mysql -u root -p$mysqlword -e"USE ${tmpdb};"
sql="UPDATE wp_posts SET post_content = replace(post_content, 'domain1', 'domain2');"
mysql -u root -p$mysqlword -e"$sql"
ERROR 1046 (3D000) at line 1: No database selected
我已选择数据库 mysql -u root -p$mysqlword -e"USE ${tmpdb};"
之前 mysql -u root -p$mysqlword -e"$sql"
,如何修复?
2条答案
按热度按时间fnvucqvd1#
你必须这样
USE
每次打开连接时都会打开数据库。所以你必须把这两个命令结合起来:wlp8pajw2#
您可以通过以下几种方式解决/简化此问题:
通过删除单独的use语句。
通过从命令行中删除用户凭据。
在update语句中直接引用数据库名称:
如果您的mysql版本>=5.6.6,请使用
mysql_config_editor
将登录凭据放入.mylogin.cnf文件。它将保存键入和密码将被加密。例如。
一旦设置,bash命令就会更简单(更安全)
或者,因为变量在这里不是必须的,