【问题标题】:Mysql Error while piping database to different server将数据库管道传输到不同服务器时出现Mysql错误
【发布时间】:2022-01-05 19:55:32
【问题描述】:

我这里有一个奇怪的错误。我正在执行的命令是这样的:

mysqldump -u root -ppass kodi_video119 | mysql -h192.168.178.73 -u kodi -ppass kodi_video119

当我通过 SSH 执行它时,一切正常,但是当我将它保存到文件并执行此文件时,我收到以下错误:

mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
'RROR 1102 (42000): Incorrect database name 'kodi_video119
mysqldump: Got errno 11 on write

我在该错误号上使用 google 找不到任何结果。允许用户编写,当我从 SSH 直接执行它时一切正常。但是使用相同的 SSH 会话(作为 root 用户)只是执行嵌入在文件中的命令是行不通的。

这里出了什么问题?我使用 nano 创建文件并使用 nano 保存它。然后 chmod +x 并执行 ./test

【问题讨论】:

  • 它清楚地告诉你没有有一个名为kodi_video119的数据库。这通常表明您在虚假数据库中
  • 向 mysqldump 添加选项,这将放置恢复所需的所有 CREATE 语句(可能根据删除选项)。
  • 数据库存在于两台服务器上。它是用输出中的“符号”写出来的……?

标签: mysql ubuntu ssh


【解决方案1】:

默认情况下,当您使用mysqldump DB 时,输出包括建表语句,但不包括CREATE DATABASE 语句。它只是假设您首先创建了一个空架构。

所以你可以先创建模式:

mysqladmin -h192.168.178.73 create kodi_video119
mysqldump kodi_video119 | mysql -h192.168.178.73 kodi_video119

(为简洁起见,我省略了 -u 和 -p 选项)

或者,您可以使用-B 选项,也就是--databases。此选项允许您指定一个或多个数据库,输出包括每个数据库的CREATE DATABASE 语句,然后再创建和填充表。您可以将它与单个数据库参数一起使用:

mysqldump -B kodi_video119 | mysql -h192.168.178.73 kodi_video119

【讨论】:

  • 这给了我完全相同的错误。数据库存在于服务器上,并且该命令在 SSH Shell 中执行时运行良好,但拒绝在脚本中工作。对这种行为有什么建议吗?
  • 你是否准确地展示了你是如何调用这个命令的?额外的' 字符的存在是可疑的。
  • 好吧,我把那个确切的命令放在一个用 nano 创建的空文件中。比我在没有文件扩展名的情况下保存它并使用 chmod +x 文件名使其可执行。比我以 ./filename 作为 root 用户执行它。我看不出有什么问题。我建议编码必须没问题,而且我看不到任何拼写错误...
  • 我现在又从头开始了,有时就像这样......现在它可以工作了。你的回答对我帮助很大。谢谢!
  • 当然,我也去过那里。从头开始是消除我们一直忽略的错误的一种方法。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多