13

ある時点で新しいデータをロードしたい開発データベース (MYSQL) があります。すべてのテーブルの内容を削除したいと思います。すべてのテーブル (外部キー制約を持つテーブルを含む) のコンテンツを削除するための、可能な限り自動化された最善の方法は何ですか? すべてを切り捨て/すべてを削除する同等の制約はありますか?

ありがとう

4

4 に答える 4

29

次のことができると思います。

  1. 外部キー制約チェックを無効にする

    mysql> SET FOREIGN_KEY_CHECKS = 0;
    
  2. テーブルを切り捨てる

    mysql> TRUNCATE MY_TABLE;
    
  3. 外部キー制約チェックを有効にする

    mysql> SET FOREIGN_KEY_CHECKS = 1;
    

外部キー制約を削除/再作成するよりも、一時的に無効にすることを好みます。

于 2009-09-30T17:41:21.377 に答える
0

本当にすべてのテーブルをより良い方法で切り捨てたい場合は、以前に抽出したデータベーススキーマを使用してデータベースを削除して作成すると思います。または、同じデータベースの 2 つのコピー (テストと空) を実行できます。テーブルを埋めたら、test db を削除し、空のものを test にコピーします。

于 2009-09-30T17:37:00.403 に答える
0

TRUNCATE (TABLE) tbl_name は、単一のテーブルを切り捨てます。それをスクリプトに貼り付けて、すべてのテーブル名でループすることができます。

http://dev.mysql.com/doc/refman/5.0/en/truncate.html

移行についても調べたいと思うかもしれませんが、Alexey は適切なアプローチを取っていると思います。これは、実行のたびに RoR がテスト データベースを再構築する方法と非常によく似ています。

于 2009-09-30T17:40:40.910 に答える