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


84

MySQL Workbench 5.2.37でテーブルデータの編集を試みると、読み取り専用モードになります。

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

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

ありがとう

提案の1つとして、WB5.2.40をアップグレードしてみました。しかし、それでもこの問題は存在します。誰か助けてください。


提案された質問はどれも機能していません。列を追加してから削除することはできません。phpMyadminへの移行が私の選択です。
ophidion 2013

PKが必要とされ、ここで関連FAQはだ- dev.mysql.com/doc/workbench/en/...
フィリップ・オルソン

Web検索でこのスレッドを見つけた人に関連する可能性のあるMySQLWorkbenchのバグ:ビューの結果グリッドは編集できません。このバグは、「更新可能」である必要がある他のすべての制約を満たすビューにのみ関係し、ストレートSQLクエリで変更できることに注意してください。
TheDudeAbides 2017

回答:


77

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

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

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

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


5
実際、私の問題はそれ自体がテーブルに主キーを持ちたくないということです。この質問については、他の回答を参照してください。
EscalinNancy 2012

2
プログラムは編集する行を特定するための主キーを必要とするため、MYSQLワークベンチで何をするかは不可能だと思います。
トーマスB

オーキー。トーマスありがとう。テーブルに主キーを含めました。
EscalinNancy 2012

DBeaverを使用していて、同じ問題に直面しました。切断して再度接続すると解決しました!
lafleur

30

テーブルに主キーまたはnull許容でない一意の定義がない場合、MySqlワークベンチはデータを編集できませんでした。


これに対する解決策はないと思います。

14

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

USE mydb;
SELECT * FROM mytable

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

SELECT * FROM mydb.mytable 

(MySql 5.2.42 / MacOsX)

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


9

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

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

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

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

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

最初に既存の行を削除することをお勧めします。

Truncate table your_table_name

1
MySQL Workbenchの最近のバージョン(私のものは6.3)には、[テーブルデータの編集]オプションがありません。
JonP 2016年

6

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


あなたが話すこのアイコンはどこにありますか?
ブラッドケント

1
自分自身に答える:ワークベンチ6.3の結果の下と右にあります
Brad Kent

3

MySQL Workbenchでは、編集するためにINDEXが必要ですが、PKである必要はありません(PKの追加も解決策ですが)。

通常のINDEXまたは複合INDEXを作成できます。MySQL WBが読み取り専用のものを修正するために必要なのはこれだけです(私はv。6.2とMariaDBv。10.1.4を持っています):

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


3

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

読み取り専用

SELECT Leadid、firstname、lastname、datecreated FROM Lead;

許可された編集

SELECT LeadID、firstname、lastname、datecreated FROM Lead;


1

このバグによると、この問題は一部の人にとってはWorkbench 5.2.38で修正され、他の人にとってはおそらく5.2.39で修正されました。最新バージョン(5.2.40)にアップグレードできますか?

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

SELECT *,'' FROM my_table

このような迅速な対応に感謝します..代替SELECTが機能していません..しかし、アップグレードできます..アップグレードして確認します..どうもありがとうございました...
EscalinNancy 2012年

@EscalinNancy:そのバグレポートの別の人は、別の回避策は関数を使用することであるとコメントしましたSELECT *, CONCAT('','') FROM my_table。おそらくそれはあなたのために働くでしょうか?
eggyal 2012年

いいえ..機能していません..結果セットの別の列としてconcat( ''。 '')を取得していますが、データは読み取り専用です..現在WBをアップグレードしています
EscalinNancy 2012年

@EscalinNancy:私は、それはここに他の誰かが可能です:(のこと、申し訳ございませんがより問題が何であるかのアイデアを持っているかもしれない-しかし、それは可能性が高いあなた場合、彼らは私の答えunacceptこの質問が表示されますだ。
eggyal

5.2.44でも同じです。データベースは生産的なものであり、以前のバージョンのワークベンチで正常に機能します。
Earth Engine

0

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

  1. USEコマンドを使用

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

    SELECT * FROM mydb.mytable
    
  3. GUI

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


0

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

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

2.)選択したステートメントに主キーも含める必要があります

Nr 1は実際には必要ありませんが、良い習慣です。


0

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

たとえば、次のクエリ

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;

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


最初のクエリが機能しない理由はわかりませんが、少なくとも次のクエリは機能します。次のクエリを編集できます。SELECT u.* FROM users u WHERE u.id IN (SELECT user_id FROM passwords WHERE p.password IS NULL);
twk

0

ここに画像の説明を入力してください

マークされたチェックをオフにすると、グリッド編集が有効になります


0

2つのテーブルを結合してフェッチすると、MySQLは読み取り専用モードで実行され、2つのテーブルの列が結果に含まれます。その場合、値を直接更新することはできません。


0

はい、MySQLも結果テーブルを編集できないことがわかりました。通常、他のテーブルを結合する結果テーブルには主キーがありません。結果テーブルを別のテーブルに配置するという他の提案を聞きましたが、より良い解決策は、結果テーブルを編集できるDbeaverを使用することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.