2016-06-22 11 views
0

数十万の列ベースのレコードを含むテーブルを削除しようとしています。通常、データベースを作成するときは、カラムベースのエンジン(infinidb)を使用しますが、この場合はENGINE文を含めるのを忘れてしまいました。だから、データベースは私のニーズにはほとんど使えません。今、私は永久に落としているテーブルでいっぱいのデータベースを持っています(それは2時間ありましたが、何も起こっていません)。私はALTER TABLEテーブルENGINE = INFINIDBコマンドを試しましたが、もう一度、それは永遠に(上記の2時間を参照してください)。編集:私が試みた最初のコマンドは、ドロップテーブルでした。それはすべてのテーブルに吊り下げられていました。何らかの理由でより速い場合にALTERコマンドを試しましたが、そうではありませんでした。エンジンが間違っているテーブルを作成した後にテーブルを削除できない

このデータベースを削除する別の方法はありますか?例えば。手動で/ mysql /ディレクトリに移動し、データベースを削除しますか?私はそれを名前を変更して残すことができると思うが、私はむしろそれを完全に取り除いて、スペースを取っていない。

+0

テーブルの削除は、数百万行のテーブルであっても、時間がかかりません。接続の問題ではないと確信していますか? – Patrick

+0

'DROP!= ALTER'は必要なエンジンで新しいテーブルを作成します。古いテーブルからのコピー更新データ。古いものを落とす新しい名前を変更してください – Alex

+0

誰もこのデータベースを現時点で使用していますか?またはあなたは唯一のクライアントですか? 'DROP'や' ALTER'クエリを実行している間にデータの挿入や更新を試みているプロセスはありますか? – Alex

答えて

0

まずはあなたが言ったテーブルを落とすことができません。しかし、ポストであなたはALTER TABLE table ENGINE=INFINIDBを述べた。

しかし、DROP != ALTERは2つの異なるものです。

だから、次の操作を行うことができます:あなたが必要と同じ構造が、エンジンと

  • CREATE新しいテーブルを。
  • 古いテーブルから作成したデータへのコピー(UPDATE)データ。
  • DROP古いテーブル。
  • RENAMEは、それは別のプロセス(ウェブサイト)は、このデータベースを使用していたことが判明し、SQLサーバーに「立ち往生」しまったクエリのカップルを持っていたとするテーブルを引き起こした古い名前に
+0

上記の私の編集を参照してください。私が試みた最初のコマンドはDROP TABLEでした。それはうまくいかなかったので、私はそのようにコマンドを変更できるかどうかを調べるためにテーブルを変更しようとしました。私は新しいテーブルを作成することはできますが、スペースを取っているので古いテーブルを削除することができます... – ale19

+0

誰もこのデータベースを現時点で使用していますか?またはあなたは唯一のクライアントですか? DROPまたはALTER問合せを実行している間にデータを挿入または更新しようとしているプロセスはありますか? – Alex

0

を新しいものの名前を変更します私が最初に "CREATE TABLE table1 AS SELECT * FROM table2"コマンドを使用したときにエンジンを指定しなかったので、間違ったエンジンを使用しているデータベースのためにハングします。ついにデータベースを拭き取り、やり直しました。ご協力いただきありがとうございます。

関連する問題