DBeaverの列読み取り専用エラー解決方法
問題の説明
macOS環境のDBeaverでクエリ結果を直接編集しようとすると、次のエラーが発生する現象について解説します:
Column "columns name" is read-only: No corresponding table column
主な特徴:
- データ編集画面でセルを変更できずエラーが表示される
UPDATE
文での更新は正常に動作する- 他のユーザーでは編集可能なため、クライアント側の問題と推測
- 根本原因: DBeaverがテーブルや列のメタデータを正しく認識していない
効果的な解決策
1. テーブル/列メタデータのリフレッシュ(推奨)
最も効果的かつ簡単な解決法です。ナビゲーターパネルで対象テーブルを右クリックし:
- ナビゲーター → 対象データベース → スキーマ → テーブル
- 問題のテーブルを右クリック
- リフレッシュ(Refresh) を選択
- クエリを再実行する
sql
-- リフレッシュ後に再実行
SELECT * FROM your_table;
2. メタデータ読み込み設定の確認
接続設定でメタデータ取得が無効になっている場合に発生:
- データベース → 接続プロパティ を開く
- メタデータタブ に移動
- 次の項目を有効化:
- ☑ テーブルメタデータを読み込む(一意キー)
- ☑ テーブル参照を読み込む(外部キー)
- 接続を再起動
注意
設定変更後はDBeaverの再起動が必要です。メタデータ読み込みが有効になるとデータ読み込み速度が低下する可能性があります。
3. クエリ記述方法の改善
クエリの構造が原因で発生することがあります:
sql
-- ❌ 問題の発生例(コメント直後にSELECT)
# サンプルコメント
SELECT id, name FROM users;
-- ✅ 改善例(空行を追加)
# サンプルコメント
SELECT id, name FROM users;
その他のクエリ記述のポイント:
- 列名に大文字を含む場合は小文字に統一
SELECT *
の代わりに明示的に列名を指定- テーブル名を完全修飾(
[DB名].[スキーマ名].[テーブル名]
)
4. 編集ロックの解除(UI操作)
編集モードが誤ってロックされている可能性があります:
- 結果グリッドの上部ツールバーを確認
- 黄色の鍵アイコン(編集ロック)をクリック
- アイコンが青色(編集可能)に変更されることを確認
- セルの編集を再試行
ロック状態(黄色) → 解除状態(青)
その他の対処法
ドライバー設定の変更
特定のデータベースで編集できない場合:
MariaDBユーザー向け
MariaDBドライバー使用時はMySQLドライバーに切り替えて試してください。接続プロパティでドライバーを変更すると解消される場合があります。
バージョン固有の対応
- DBeaver 22.3.X:
rowid
列を含むクエリで発生 →rowid
を除外sql-- 問題発生クエリ SELECT rowid, * FROM table; -- 改善クエリ SELECT id, name, email FROM table;
- コメント直後のクエリ実行時 → コメントとクエリの間に空行を追加
一時的なワークアラウンド
- DBeaverの再起動:セッション状態のリセット
- 接続の再接続:データベースナビゲーターで接続を右クリック → 「切断」→「再接続」
- 最終手段:安定バージョンへのダウングレード(例: v22.2.2)
根本原因と予防策
このエラーは主に DBeaverのメタデータキャッシュと実際のデータベース状態の不一致 によって発生します。予防には:
- テーブル構造変更後は必ずリフレッシュを実行
- 定期的にDBeaverをアップデート(GitHub Issuesで既知の問題を確認)
- 複雑なクエリでは列名を明示的に指定
- 開発/テスト環境で設定変更前にバックアップ
これらの対策により、DBeaverの便利なインライン編集機能をスムーズに利用できるようになります。