2011-08-02 14 views
1

これはMySQLの問題かSSHの問題か分かりません。しかし、nanoやbashスクリプトなどの別のターミナルプログラムを使用しているときには問題は発生しません。SSHからMysqlにテキストを間違った順序で貼り付ける

私は別のエントリ(行は本当に長いです)の多い

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

のように見えるラインの束を含むのmysqldumpファイルを持っています。私はこのデータを私の端末に貼り付けてこのデータをリモートデータベースに挿入しようとしていますが、貼り付けると、チャンクを順不同で挿入するようです。

','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の端末を使用しています。

おかげ

+0

これは、SSH /ターミナルと同様に普遍的に使用できる限り、他の方法でも構いません。明らかにGUIツールはこのようなことをすることができますが、私は端末が好きです。 – Brandon

答えて

1

sshを介してmysqlとbashの両方に貼り付けるのと同様の問題がありました。この犯人は統制文字として解釈されたUnicode文字であった。

症状:テキストを貼り付ける場合、挿入位置が新しい行を開始せず、一見ランダムに、バックPOS 1に数回移動する、その後、いくつかの新しいテキストが挿入される、またはいくつかの既に貼り付けたテキストが上書きされますその結果、文字化けが起こります。

原因:貼り付けるテキストにハイフンが必要なUnicodeダッシュのような文字があり、bashとmysqlが挿入文字の位置を移動するための制御文字の1つとして解釈されていました。

貼り付ける前に、テキストに不要な文字が含まれていないことを確認してください。

テスト:私はviを(ssh経由で)開いて、挿入モードに入り( "i"を押す)、挿入する(Shift + Insertを押す)ことができました。 Unicode文字をUnicodeシーケンスに分割して表示します。 VIにこれは悪いdash-を作っ

--no-create-dbopt mysqldump 

貼り付け:

例:私のテキストは、このように始まっペーストにします。ssh経由のbashやMySQLへの

mysqldump –-opt –-no-create-db 

貼り付けこれは、以下のような結果に次のように表示されます。

mysqldump �[email protected]~S-opt �[email protected]~S-no-create-db 

すべてのオプションの最初のダッシュが間違った文字だったことを意味します。私はそれらを訂正し、すべて正常に機能しました:

+0

私はそれをテキストファイルに保存して転送し、リモートで実行しました。しかし、私はこれがもっともらしい原因だと思う。 TextMateを使用している場合は、Control + Command + Tを押し、「Word/Wordへの選択をASCIIに変換」を選択して修正できます。 – Brandon

0

は私がやりたい:

ssh hostname mysqldump database | mysql localdatabase 

そして、ちょうど1つのコマンドで全体のことを行います。

もちろん、dumpコマンドにさまざまなオプションを追加して、テーブルの削除や作成など必要のないものをスキップすることもできます。

+0

このシナリオの問題は、このソフトウェアの 'v2'を書いているときに、テーブル/カラム名やその他のデータの一部を変更していることです。私はすでにダンプを修正していますので、最後にファイルをアップロードする必要があります。 – Brandon

+0

@Brandonよくssh出力をローカルにファイルにリダイレクトすることができます(ダウンロードする必要はありませんサーバーからのファイル)。その後、ローカルで変更します。また、コマンド 'replace'(MySqlの一部)をチェックして、それをパイプして変更することもできます。 – Ariel

+0

私は好きなようにファイルを編集し、それをアップロードして、cat data.sqlを使ってそれを戻しました。 mysql database_a。しかし、まだ最終的な解決策を探しています。 – Brandon

関連する問題