クエリ結果から出てくるいくつかのレコードを削除する必要があります。しかし、クエリ結果は としてマークされRead Only
ます。主キーを照会しても。問題は、DB が非常に大きいため (150 万レコードというわけではありません)、テーブルを右クリックしEdit table data
てエラー番号を選択することができないことです。2008:mysql client ran out of memory
これは解決できませんでした (ただし、私の PC には 8 GB の RAM が搭載されています)。私のDBはlocalhostにロードされているので、クライアントはサーバーです。助けてください。
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 エディタ] タブに移動し、[安全な更新] チェックボックスをオフにします。でもその時は気をつけて!:-)
大きなテーブルを編集するには:
「Send to SQL Editor -> SELECT All Statement」を右クリックできます。
次に、実行する前に、これに aまたは条件を追加して、LIMIT 100
返された行をフィルタリングします。SELECT
WHERE
「設定 -> SQL エディター」に移動して、 「行の制限」チェックボックスをマークすることもできます。たとえば 1000 に設定すると、「テーブルの編集」コマンドは最初の 1000 行をフェッチします。次に、[データ ソースからレコードの次のフレームを取得] ボタンをクリックして、次の「ページ」に移動できます。
あなたの他の質問:
結果セットを常に編集できるとは限りません。GROUP BY
複数のテーブルからのデータが含まれる場合、結果セットは読み取り専用になる可能性があります。その場合、DELETE
orUPDATE
ステートメントを記述して、削除または更新を行うことができます。