@Don、クエリの実行ありがとうございます。根本原因が確認できました 
あなたの結果は、私たちが疑っていたことを正確に示しています。
user_options のコピーを含む backup スキーマがあります。
- そのテーブルにはまだ古いデフォルト (
column_default = false) が残っています。
- クエリ結果では
backup の行が public よりも前に表示されました。
マイグレーションが public.user_options のデフォルトを削除したとき、backup.user_options には触れませんでした。その後、mark_readonly がスキーマでフィルタリングせずに information_schema.columns をクエリし、最初に backup の行(まだデフォルトが設定されていた)を取得したため、失敗しました 
修正方法は、マイグレーションが実際に操作するスキーマのみをチェックするように、クエリに単純に table_schema = 'public' を追加することです。
「いいね!」 4