3

2KBを超えるSQLファイルをmysqlCLIに貼り付けると、ランダムに文字が失われ、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の問題である可能性がありますか?

私はこれまでターミナルでそのような問題を経験したことがありませんでした。これはmysqlcliでのみ発生します。

4

4 に答える 4

5

SQLをファイル(例:query.sql)に書き込み、mySQLCLIでsourceコマンドを使用します。

$ vi query.sql
$ mysql -h db.host.tld -u user -p
mysql> use mydatabase
mysql> source query.sql
于 2012-10-25T17:54:56.510 に答える
4

MySQL CLIクライアントへの貼り付けは、インタラクティブな行編集にReadlineを使用するため、注意が必要です。Readlineは、特定の入力を制御シーケンスとして解釈し、それらをそのままMySQLクライアントに渡しません。あなたのケースで問題を引き起こしている可能性が最も高い文字は表形式であり、SQLではインデントの目的でよく使用されますが、タブ補完のためにReadlineで使用されます。クエリの途中でタブが誤って補完されると、予期しない結果が生じる可能性があり、干渉が発生した正確な場所を特定するのが難しい場合があります。

于 2012-10-25T20:42:42.543 に答える
1

Sammitchはここで正しい方向に進んでいると思いますが、解決策はmysqlが存在するマシンにログインしている場合にのみ機能すると思います。以下はどこからでも機能するはずです。

$ vi query.sql
$ mysql -h db.host.tld -u user -p mydatabase < query.sql

CLIに貼り付けると、いつも緊張します。

于 2012-10-25T22:09:54.173 に答える
0

これは、mysqlサーバー上のターミナルのファイルに貼り付けるときに発生しますか?ネットワークを介して貼り付けるときに、バッファの問題が発生している可能性があります。しかし、同じサーバー上のファイルへの貼り付けを確認し、それが機能する場合、問題を引き起こしているのはmysql cliですが、問題を引き起こしているのはネットワーク遅延だけであるに違いありません。

于 2012-10-24T19:23:59.480 に答える