web-dev-qa-db-ja.com

MySQL Workbenchテーブルデータの編集は読み取り専用です

MySQL Workbench 5.2.37で表データを編集しようとすると、読み取り専用モードになります。

テーブルに主キーがある場合にのみ編集可能です。

主キーなしでテーブルを処理するための修正はありますか?

ありがとう

提案の1つとして、WB 5.2.40をアップグレードしてみました。しかし、まだこの問題が存在します。

70
EscalinNancy

テーブルに主キーがあると仮定しています。まず、テーブルのロック解除コマンドを実行して、それが修正されるかどうかを確認します。

他のすべてが失敗した場合は、テーブルを変更して自動インクリメントで新しいプライマリキー列を作成できます。完了したら、問題なく列を削除できるはずです。

いつものように、テーブルを変更する前にバックアップを作成します。 :)

注:MySQLワークベンチは、それが問題の場合、主キーなしでは機能しません。ただし、多対多のテーブルがある場合は、両方の列を主キーとして設定して、データを編集できます。

63
Thomas B

テーブルに主キーまたは定義された一意の非ヌル値が定義されていない場合、MySqlワークベンチはデータを編集できません。

27
Tarun Singhal

DB接続のデフォルトスキーマを設定すると、スキーマを明示的に設定するまでSelectは読み取り専用モードで実行されます

USE mydb;
SELECT * FROM mytable

これは編集モードでも実行されます:

SELECT * FROM mydb.mytable 

(MySql 5.2.42/MacOsX)

これがお役に立てば幸いです。

13
Manitoba

これは、MySQLWorkbenchの 既知の制限 です(PKなしでテーブルを編集することはできません):

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

方法1:(場合によっては機能しない方法)
オブジェクトブラウザ内のテーブルを右クリックし、そこから[テーブルデータの編集]オプションを選択します。

方法2:
代わりに主キーを追加することをお勧めします。

ALTER TABLE `your_table_name` ADD PRIMARY KEY (`column_name`);

また、最初に既存の行を削除することもできます。

Truncate table your_table_name
6
JerryGoyal

Mysqlワークベンチの「読み取り専用」アイコンにカーソルを合わせると、編集できない理由を説明するツールチップが表示されます。私の場合、主キーまたは一意のNULL入力不可の列を持つテーブルのみを編集できます。

3
Tarun Garg

MySQL Workbenchでは、編集するためにINDEXが必要です。PKである必要はありません(PKを追加することもソリューションです)。

通常のINDEXまたは複合INDEXを作成できます。これで、MySQL WBは読み取り専用の問題を修正する必要があります(MariaDB v。10.1.4でv。6.2を使用しています):

テーブルを右クリックして[テーブルを変更...]を選択し、[インデックス]タブに移動します。左側のペインにインデックスのカスタム名を入力し、中央のペインにチェックマークを1つ(ベールが一意であることを確認)または複数のフィールド(組み合わせが一意であることを確認してください)

3
aesede

このバグ によると、この問題は一部の人はWorkbench 5.2.38で修正され、他の人はおそらく5.2.39で修正されました。 pgrade を最新バージョン(5.2.40 )?

または、次の方法で回避策を講じることもできます。

SELECT *,'' FROM my_table
1
eggyal

主キーを選択していても、読み取り専用の問題が発生していました。最終的には、ケーシングの問題であることがわかりました。明らかに、PK列は、表で定義されているのと同じように大文字と小文字を区別する必要があります。使用:Windows上のワークベンチ6.3

読み取り専用

SELECT leadid、firstname、lastname、datecreated FROM lead;

編集可能

SELECT LeadID、firstname、lastname、datecreated FROM lead;

1
Quad9x

1.)主キーを一意にする必要があり、編集できるようになります。

「青」スキーマのテーブルを右クリックし、[ALTER TABLE]を選択して、primert key(PK)を探し、チェックボックスUNをオンにします。AIはすでにチェックされているはずです。その後、適用するだけで、テーブルデータを編集できるようになります。

2.)また、あなたの選択ステートメントに入門キーを含める必要があります

Nr 1は必ずしも必要ではありませんが、良い習慣です。

0
Degar007

クエリにJOINがある場合、結果がすべて1つのテーブルからのものであっても、Mysql Workbenchではテーブルを変更できません。

たとえば、次のクエリ

SELECT u.* FROM users u JOIN passwords p ON u.id=p.user_id WHERE p.password IS NULL;

結果が1つのテーブルに制限されている場合でも、結果を編集したり行を追加したりすることはできません。具体的には次のようなことを行う必要があります。

SELECT * FROM users WHERE id=1012;

その後、行を編集して、テーブルに行を追加できます。

0
Keith Tyler

マニトバの投稿を参考に、別の解決策を見つけました。要約すると、ソリューションは次のとおりです。

  1. USEコマンドを使用する

    USE mydb;
    SELECT * FROM mytable
    
  2. 明示的なスキーマプレフィックスの場合:

    SELECT * FROM mydb.mytable
    
  3. GUI

    オブジェクトブラウザの「SCHEMAS」ペインでは、同じ問題がある場合、すべてのデータベースアイコンは最初は強調表示されません。デフォルトにしたいデータベースアイコンを右クリックして、「デフォルトスキーマとして設定」を選択します。

0
Earth Engine