4

クエリ結果から出てくるいくつかのレコードを削除する必要があります。しかし、クエリ結果は としてマークされRead Onlyます。主キーを照会しても。問題は、DB が非常に大きいため (150 万レコードというわけではありません)、テーブルを右クリックしEdit table dataてエラー番号を選択することができないことです。2008:mysql client ran out of memoryこれは解決できませんでした (ただし、私の PC には 8 GB の RAM が搭載されています)。私のDBはlocalhostにロードされているので、クライアントはサーバーです。助けてください。

4

2 に答える 2

2

MySQL Workbench はデフォルトでセキュア モード (「安全な更新」モードと呼ばれます) に設定されています。つまり、(主) キーを持つ WHERE 句または LIMIT パラメーターが明示的に定義されていない限り、SQL エディター内で行を更新または削除することはできません。

したがって、クエリは次のとおりです。

DELETE FROM table WHERE name='xyz'

PK で WHERE を定義するまで機能しません (実際には行を削除しません)。

DELETE FROM table WHERE id=100

また

DELETE FROM table WHERE name='xyz' LIMIT 1

Workbench でセキュア モードを無効にするには、[編集] -> [設定] -> [SQL エディタ] タブに移動し、[安全な更新] チェックボックスをオフにします。でもその時は気をつけて!:-)

于 2012-09-14T08:19:00.690 に答える
-1

大きなテーブルを編集するには:

「Send to SQL Editor -> SELECT All Statement」を右クリックできます。

次に、実行する前に、これに aまたは条件を追加して、LIMIT 100返された行をフィルタリングします。SELECTWHERE

「設定 -> SQL エディター」に移動して、 「行の制限」チェックボックスをマークすることもできます。たとえば 1000 に設定すると、「テーブルの編集」コマンドは最初の 1000 行をフェッチします。次に、[データ ソースからレコードの次のフレームを取得] ボタンをクリックして、次の「ページ」に移動できます。


あなたの他の質問:

結果セットを常に編集できるとは限りません。GROUP BY複数のテーブルからのデータが含まれる場合、結果セットは読み取り専用になる可能性があります。その場合、DELETEorUPDATEステートメントを記述して、削除または更新を行うことができます。

于 2012-08-08T11:15:57.430 に答える