mysql - 通过 SSH 以错误的顺序将文本粘贴到 Mysql

标签 mysql ssh terminal

我不确定这是Mysql的问题还是SSH的问题。但是,当使用其他终端程序(例如 nano 或 bash 脚本)时,不会发生此问题。

我有一个 mysqldump 文件,其中包含一堆看起来像

INSERT INTO `issues` VALUES (10,'2010-06-21 16:16:08','2010-08-31 11:4...

有很多不同的条目(行真的很长)。我试图将它粘贴到我的终端中以将此数据插入到远程数据库中,但是当我粘贴时,它似乎是分段进行的,插入的 block 是乱序的。这是一个后处理示例:

','May 2011',8,45);','April 2011',7,45),(21,'2011-05-09 09:31:28','2011-05-09 09:31:28','2011-05-12 08:48:16','','March 2011',6,45),(20,'2011-04-07 13:45:14','2011-04-07 13:45:14','2011-04-13 16:00:28','','February 2011',5,45),(19,'2011-03-03 13:36:26','2011-03-03 13:36:26','2011-03-10 08:34:19','','December 2010',4,45),(18,'2011-02-01 13:43:16','2011-02-01 13:43:16','2011-02-15 11:22:09','','November 2010',3,45),(17,'2010-12-07 12:04:53','2010-12-07 12:04:53','2010-12-09 10:00:02','','October 2010',2,45),(16,'2010-11-05 13:04:06','2010-11-05 13:04:06','2010-11-15 11:29:29','','September 2010',1,45),(14,'2010-10-05 08:58:27','2010-10-11 13:28:54','2010-10-12 07:21:20','INSERT INTO `issues` VALUES (10,'2010-06-21 16:16:08','2010-08-31 11:44:18','2010-10-11 12:33:46','\0','June 2010',0,45),(11,'2010-06-24 15:13:00','2010-06-24 15:13:22',NULL,'\0','May 2010',0,45),(12,'2010-08-25 12:47:42','2010-08-31 11:44:02','2010-10-11 12:33:59','

有谁知道导致此问题的原因和解决方法?我试过假设这是一个显示问题并无论如何插入它,但这是不行的。看来真的是不正常了。我正在使用 10.6.6 Snow Leopard 和 Apple 的终端。

谢谢

最佳答案

通过 ssh 粘贴到 mysql 和 bash 时遇到类似的问题。罪魁祸首是被解释为控制字符的 Unicode 字符。

现象:粘贴文字时,插入位置会多次移回pos 1,貌似是随机的,不换行,然后插入一些新的文字或已经粘贴的一些文字文本将被覆盖,导致乱码。

原因:事实证明,要粘贴的文本在应该是破折号的地方有一些类似 unicode 破折号的字符,这些被 bash 和 mysql 解释为一种控制字符来移动插入列位置。

因此,在粘贴之前确保您的文本不包含不需要的字符。

测试:对我来说,一个很好的测试是打开 vi(通过或不通过 ssh),进入插入模式(按“i”)并插入(按 Shift+Insert)。它将显示分解为 Unicode 序列的 Unicode 字符。

示例:我要粘贴的文本是这样开始的:

mysqldump –-opt –-no-create-db 

通过 ssh 将其粘贴到 bash 或 mysql 中导致:

--no-create-dbopt mysqldump

将其粘贴到 vi 中会使坏的类似破折号的字符可见,导致:

mysqldump �~@~S-opt �~@~S-no-create-db

表示每个选项的第一个破折号是错误的字符。我更正了它们,现在一切正常:

mysqldump --opt --no-create-db

关于mysql - 通过 SSH 以错误的顺序将文本粘贴到 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6906536/

相关文章:

linux - 将命令输出重定向到 bash 中的变量失败

linux - virtualenv 在新的 bash shell 中没有被激活

macos - 是否可以以使用 getuid() 登录用户 ID 的 root 身份运行?

php - 每 X 分钟刷新一些脚本函数的最佳方法是什么?

php - MYSQL用左连接连接3个表

php - 通过外键获取引用表

python - Paramiko/ssh/tail + grep 挂起

MySQL - 使用波兰语字符进行不区分重音的搜索 - UTF8

ruby-on-rails - webistrano ssh 代理

javascript - Node.js child_process exec,stdin 没有传递给 ssh