粘贴到mysql CLI不起作用-它会丢失一些字符

粘贴到mysql CLI不起作用-它会丢失一些字符,mysql,Mysql,我将一个>2KB的SQL文件粘贴到mysql CLI,它会随机丢失字符,然后在我的SQL中报告语法错误 例如: (.....) UPDATE ct_transform_target_summary SET ytd_margin_target = jul_margin_target + aug_margin_target + sep_margin_target + oct_margin_target + nov_margin_target + dec_margin_target +

我将一个>2KB的SQL文件粘贴到mysql CLI,它会随机丢失字符,然后在我的SQL中报告语法错误

例如:

(.....)
UPDATE ct_transform_target_summary
SET
ytd_margin_target = jul_margin_target + aug_margin_target + sep_margin_target + oct_margin_target + nov_margin_target + dec_margin_target +
                    jan_margin_target + feb_margin_target + mar_margin_target + apr_margin_target + may_margin_target + jun_margin_target,
ytd_adjustments = jul_margin_adj + aug_margin_adj + sep_margin_adj + oct_margin_adj + nov_margin_adj + dec_margin_adj +
                  jan_margin_adj + feb_margin_adj + mar_margin_adj + apt_margin_adj + may_margin_adj + jun_margin_adj,
ytd_margin = jul_margin + aug_margin + sep_margin + oct_margin + nov_margin + dec_margin +
             jan_margin + feb_margin + mar_margin + apr_margin + may_margin + jun_margin;
(....)
变成:

(....)
->   
->   
->   SET
->     ytd_margin_target = jul_margin_target + aug_margin_target + sep_margin_target + oct_margin_target + nov_margin_target + dec_margin_target +
->                    
->     ytd_adjustments = jul_margin_adj + aug_margin_adj + sep_margin_adj + oct_margin_adj + nov_margin_adj + dec_margin_adj +
->                       jan_margin_adj + feb_ma
->     ytd_margin = jul_margin + aug_margin + sep_margin + oct_margin + nov_margin + dec_margin +
->                  jan_margin + feb_margin + mar_margin + apr_margin + may_
这显然不会发生在短SQL代码上,而只发生在长代码上。 这是由我的终端(Fedora 17 Gnome终端)引起的还是mysql CLI的问题


我以前从未在航站楼遇到过这样的问题。这只发生在mysql cli中。

当您粘贴到mysql服务器终端中的文件时,是否会发生这种情况?在网络上粘贴时,很可能存在缓冲区问题。但是我会检查粘贴到同一台服务器上的文件,如果可以的话,那么是mysql cli造成了一些问题,但我打赌这只是网络延迟造成的问题。

将SQL写入一个文件,即:query.SQL,然后在mysql cli中使用
source
命令

$ vi query.sql
$ mysql -h db.host.tld -u user -p
mysql> use mydatabase
mysql> source query.sql

粘贴到MySQL CLI客户端是很棘手的,因为它使用Readline进行交互式行编辑。Readline将某些输入解释为控制序列,不会将其逐字传递给MySQL客户端。在本例中,最可能导致问题的字符是制表,在SQL中经常用于缩进,但在Readline中用于制表符完成。在您的查询中间无意中的制表完成可能会有非常意外的结果,而且很难精确地指出它引入了干扰的确切位置。

< P>我认为Sammitch在这方面是正确的,但是我相信只有当您登录到MySQL生存的机器时,解决方案才是有效的。以下内容应该可以在任何地方使用

$ vi query.sql
$ mysql -h db.host.tld -u user -p mydatabase < query.sql
$vi query.sql
$mysql-hdb.host.tld-u user-p mydatabase
粘贴到CLI中总是让我紧张