0

私はstackoverflowでそのような質問があると確信していますが、私はそれを見つけることができません:(

同じデータを持つ 2 つのデータベースがあります (「開発者」データベースと「運用」データベース)。「本番」データベースは「ライブ」データベースです。訪問者はこのデータを見ることができます。「開発者」データベースは、ローカル サーバーで新しい機能を作成するデータベースです。

「開発者」データベースにいくつかの新しいテーブルと古いテーブルのいくつかの新しいフィールドを追加する状況があります。

そして今、この新しく作成されたフィールドとテーブルを「本番」データベースにコピーする必要があります(ただし、構造のみ、データをコピーしてはならず、「本番」データベースのデータを変更する必要はありません)。

UPD:開発中のデータベースからデータベース構造のダンプを作成し、それを本番データベースにインポートすると、すべてのテーブルからすべての新しいフィールドが自動的に追加されるソリューションがあるかもしれません

どの機能を使用すればよいですか?

ありがとう。

4

3 に答える 3

2

あなたが欲しいalter tablehttp://dev.mysql.com/doc/refman/5.1/en/alter-table.html

于 2012-05-31T14:20:35.430 に答える
1

既存のテーブルを変更するには:

alter table tablename add column newcolumn tinyint(1) default 1 AFTER othercolumn

新しいテーブルを作成するには:

CREATE TABLE  `newtablename` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `newcolumn` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
于 2012-05-31T14:21:18.260 に答える
0
  • 次のように使用できる構造のみをコピーします。

    jcho360> create table t3 like t2;

    Query OK, 0 rows affected (0.05 sec).

構造を作成した後にコンテンツをコピーする場合は、次を使用できます。

INSERT INTO t3 SELECT * FROM t2;
  • 使用できるデータをコピーしたい場合(構造なし、つまり、PK、FKなど)

    mysql> create table t4 as select * from t1;

もちろん、バックアップを使用してテーブルを復元することもできます

  • 新しい列を追加したい場合は、使用できます

    alter table tablename add column newcolumn vartype;

別のデータベースのテーブルを使用する場合は、最初にデータベースを呼び出し、後で名前を呼び出すクエリを使用できます。

select * from database.tablename;

ユーザーには他のデータベースへのアクセス許可も必要であることを忘れないでください。

于 2012-05-31T14:26:22.547 に答える