11

私のアプリケーションでは、いくつかの変更を行い、それらをテスト サーバーにアップロードします。サーバー データベースにアクセスできないため、ALTERコマンドを実行して変更を加えます。

メソッドを使用して、サーバーで次のコマンドを実行しました。

ALTER TABLE `blahblahtable` ADD COLUMN `newcolumn` INT(12) NOT NULL

その後、テーブルのすべてのデータが削除されていることがわかりました。今、テーブルは空白です。

したがって、彼のデータを削除せずにテーブルを変更する必要があります。それを行う方法はありますか?

4

2 に答える 2

21

あなたの質問は非常に明白です。テーブルに新しい列を追加し、それを に設定していNOT NULLます。
わかりやすくするために、コマンドを実行したときのサーバーの反応を説明します。

  1. 新しい列を追加すると、テーブルのすべての行でその列の値を設定する必要があります。

  2. デフォルト値を宣言しないnullため、この新しい列に設定されたすべての行。

  3. nullサーバーは、テーブルの行の列に sを許可しない値があることに気付きますnull。これは違法です。

  4. 競合を解決するために、無効な行が削除されます。

この問題にはいくつかの適切な修正があります。

  • 作成している列のデフォルト値(推奨) を設定します。

  • なしで列を作成しNOT NULL、適切な値を設定してから、列を作成しますNOT NULL

于 2011-04-18T17:34:18.393 に答える
0

一時テーブルを作成し、変更するテーブルからすべての情報を渡し、その情報を変更されたテーブルに返すことができます。

于 2011-04-18T07:22:28.560 に答える