Skip to content

DBeaverの列読み取り専用エラー解決方法

問題の説明

macOS環境のDBeaverでクエリ結果を直接編集しようとすると、次のエラーが発生する現象について解説します:

Column "columns name" is read-only: No corresponding table column

主な特徴

  • データ編集画面でセルを変更できずエラーが表示される
  • UPDATE文での更新は正常に動作する
  • 他のユーザーでは編集可能なため、クライアント側の問題と推測
  • 根本原因: DBeaverがテーブルや列のメタデータを正しく認識していない

効果的な解決策

1. テーブル/列メタデータのリフレッシュ(推奨)

最も効果的かつ簡単な解決法です。ナビゲーターパネルで対象テーブルを右クリックし:

  1. ナビゲーター → 対象データベース → スキーマ → テーブル
  2. 問題のテーブルを右クリック
  3. リフレッシュ(Refresh) を選択
  4. クエリを再実行する
sql
-- リフレッシュ後に再実行
SELECT * FROM your_table;

2. メタデータ読み込み設定の確認

接続設定でメタデータ取得が無効になっている場合に発生:

  1. データベース → 接続プロパティ を開く
  2. メタデータタブ に移動
  3. 次の項目を有効化:
    • ☑ テーブルメタデータを読み込む(一意キー)
    • ☑ テーブル参照を読み込む(外部キー)
  4. 接続を再起動

注意

設定変更後はDBeaverの再起動が必要です。メタデータ読み込みが有効になるとデータ読み込み速度が低下する可能性があります。

3. クエリ記述方法の改善

クエリの構造が原因で発生することがあります:

sql
-- ❌ 問題の発生例(コメント直後にSELECT)
# サンプルコメント
SELECT id, name FROM users;

-- ✅ 改善例(空行を追加)
# サンプルコメント

SELECT id, name FROM users;

その他のクエリ記述のポイント

  • 列名に大文字を含む場合は小文字に統一
  • SELECT *の代わりに明示的に列名を指定
  • テーブル名を完全修飾([DB名].[スキーマ名].[テーブル名]

4. 編集ロックの解除(UI操作)

編集モードが誤ってロックされている可能性があります:

  1. 結果グリッドの上部ツールバーを確認
  2. 黄色の鍵アイコン(編集ロック)をクリック
  3. アイコンが青色(編集可能)に変更されることを確認
  4. セルの編集を再試行

ロック状態(黄色) → 解除状態(青)

その他の対処法

ドライバー設定の変更

特定のデータベースで編集できない場合:

MariaDBユーザー向け

MariaDBドライバー使用時はMySQLドライバーに切り替えて試してください。接続プロパティでドライバーを変更すると解消される場合があります。

バージョン固有の対応

  • DBeaver 22.3.Xrowid列を含むクエリで発生 → rowidを除外
    sql
    -- 問題発生クエリ
    SELECT rowid, * FROM table;
    
    -- 改善クエリ
    SELECT id, name, email FROM table;
  • コメント直後のクエリ実行時 → コメントとクエリの間に空行を追加

一時的なワークアラウンド

  • DBeaverの再起動:セッション状態のリセット
  • 接続の再接続:データベースナビゲーターで接続を右クリック → 「切断」→「再接続」
  • 最終手段:安定バージョンへのダウングレード(例: v22.2.2)

根本原因と予防策

このエラーは主に DBeaverのメタデータキャッシュと実際のデータベース状態の不一致 によって発生します。予防には:

  • テーブル構造変更後は必ずリフレッシュを実行
  • 定期的にDBeaverをアップデート(GitHub Issuesで既知の問題を確認)
  • 複雑なクエリでは列名を明示的に指定
  • 開発/テスト環境で設定変更前にバックアップ

これらの対策により、DBeaverの便利なインライン編集機能をスムーズに利用できるようになります。