Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 第1行出现错误1046(3D000):未选择数据库_Mysql_Bash - Fatal编程技术网

Mysql 第1行出现错误1046(3D000):未选择数据库

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而不是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-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并手动输入密码,因为我们对具体情况了解不够,无法确定。当我们这样做时,他们可能也不想使用根帐户与数据库进行这种交互。