Mysql 第1行出现错误1046(3D000):未选择数据库
我想用bash而不是mysql终端直接更新一些表。Mysql 第1行出现错误1046(3D000):未选择数据库,mysql,bash,Mysql,Bash,我想用bash而不是mysql终端直接更新一些表。 通常的方法是在bash中使用heredoc字符串添加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 在mysql-u root-
通常的方法是在bash中使用heredoc字符串添加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
在
mysql-u root-p$mysqlword-e“$sql”
之前,我选择了使用mysql-u root-p$mysqlword-e”USE${tmpdb};“
的数据库,如何修复它?每次打开连接时都必须使用该数据库。因此,您必须组合两个命令:
mysqlword="xyzzy"
tmpdb="yyyy"
sql="USE ${tmpdb}; UPDATE wp_posts SET post_content = replace(post_content, 'domain1', 'domain2');"
mysql -u root -p$mysqlword -e"$sql"
每次打开连接时都必须使用
数据库。因此,您必须组合两个命令:
mysqlword="xyzzy"
tmpdb="yyyy"
sql="USE ${tmpdb}; UPDATE wp_posts SET post_content = replace(post_content, 'domain1', 'domain2');"
mysql -u root -p$mysqlword -e"$sql"
您可以通过以下两种方式修复/简化此问题:
通过删除单独的USE语句
通过从命令行中删除用户凭据
在UPDATE语句中直接引用数据库名称:
sql="UPDATE wp_posts SET ${tmpdb}.post_content = replace(post_content, 'domain1', 'domain2');"
如果您的mysql版本>=5.6.6,请使用mysql\u config\u editor
将登录凭据放入.mylogin.cnf文件中。它将保存键入,密码将被加密
e、 g
设置后,bash命令将更简单(更安全)
或者,因为变量在这里不是必需的
mysql --login-path=root -e "UPDATE wp_posts SET yyyy.post_content = replace(post_content, 'domain1', 'domain2');"
您可以通过以下两种方式修复/简化此问题:
通过删除单独的USE语句
通过从命令行中删除用户凭据
在UPDATE语句中直接引用数据库名称:
sql="UPDATE wp_posts SET ${tmpdb}.post_content = replace(post_content, 'domain1', 'domain2');"
如果您的mysql版本>=5.6.6,请使用mysql\u config\u editor
将登录凭据放入.mylogin.cnf文件中。它将保存键入,密码将被加密
e、 g
设置后,bash命令将更简单(更安全)
或者,因为变量在这里不是必需的
mysql --login-path=root -e "UPDATE wp_posts SET yyyy.post_content = replace(post_content, 'domain1', 'domain2');"
不,MariaDB不支持此功能。@scrapy完全正确,MariaDB不支持此功能,但后来帖子被标记为mysql而不是MariaDB。关键是要从命令行中获取凭据。如果这是一项一次性任务,那么用户最好自己使用-p并手动输入密码,因为我们对具体情况了解不够,无法确定。当我们这样做的时候,他们可能也不想使用根帐户与数据库进行这种交互。不,MariaDB不支持此功能。@scrapy完全正确,MariaDB不支持此功能,但是帖子被标记为mysql而不是MariaDB。关键是要从命令行中获取凭据。如果这是一项一次性任务,那么用户最好自己使用-p并手动输入密码,因为我们对具体情况了解不够,无法确定。当我们这样做时,他们可能也不想使用根帐户与数据库进行这种交互。