mysql - 为什么使用ssh将备份文件转储到另一台服务器时出现 `tcgetattr`错误?

标签 mysql ssh mysqldump database-backups

我想在另一台服务器上转储表备份,我正在使用 ssh 来完成它。 当我运行下面的命令时,它给出了一个错误,但是转储文件被复制到目的地。

mysqldump -u username -ppassword dbname tablename | ssh -t -t servers_username@domain_name 'cat > /tmp/bckp.sql';

tcgetattr: Invalid argument

如果我按 CTRL+c 然后它会附加错误消息 Killed by signal 2.

为什么会出现这个错误?

最佳答案

我在使用 ssh -t -tssh -tt 强制伪终端分配时看到了这个错误。

tcgetattr 函数用于查找由文件描述符表示的伪终端的属性;它需要一个文件描述符和一个指向 termios 结构的指针来存储终端元数据。在我看来,它来自 stub code in glibc。该错误表示 termios 结构的空指针。我不确定这些相同的错误处理语义是否适用于 tcgetattr 的特定于平台的实现。

如果你想抑制这个错误,像这样调用 ssh:

ssh 2>/dev/null

这会将 STDERR 重定向到 /dev/null;使用此重定向调用时您不会看到错误。请注意,这将掩盖 ssh 的其他错误;出于调试目的,您可能需要删除它。

关于mysql - 为什么使用ssh将备份文件转储到另一台服务器时出现 `tcgetattr`错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12890798/

相关文章:

mysql - 添加 ORDER BY 会显着减慢 JOIN 查询,即使所有相关列都已编制索引。我怎样才能让它更快?

php - SQL插入多行,foreach

ssh - "Host key did not appear in manually configured list"是什么意思?

mysql - 将字符串拆分为行

mysql - mysqldump 的批处理文件,用于将每个数据库备份到一个单独的文件中

php - 从 PHP 检索 MYSQL 连接值

javascript - 检测页面中任何文本区域的更改,并将此特定输入中更改的数据添加到其他表中

ssh - 当我尝试在 `ddev auth ssh` 之后在 DDEV web 容器中使用 ssh 时,ssh key 似乎不起作用, "too many authentication failures"

c# - SSH.NET : freeze upon sudo su - user2

mysql - 在 MySQL 导入 : ERROR at line 32769: Unknown command '\' '