[BUG] v4.2.9 PostgreSQL 启动迁移失败:DROP INDEX CURRENT_SCHEMA() 语法错误
メンテナーはふだん 2 日以内に返信
関連するプルリクエストがすでにマージされています。
- #3269 @renovate による — マージ済み
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 75/100
調査の方向性
このバグは依存関係のバージョンが誤っていることが原因です。internal/db/webdav_property_migrate.go は DropIndex を呼び出し、固定された gorm.io/driver/postgres v1.6.2 は無効な SQL DROP INDEX CURRENT_SCHEMA()."idx_webdav_property" を出力します。修正するには、go.mod/go.sum でドライバーを v1.6.3 に更新し(go-gorm/postgres PR #353 の upstream 修正)、古いインデックス idx_webdav_property(path, namespace, name) がある PostgreSQL インスタンスでマイグレーションを検証します。v4.2.8 からアップグレードしたデータベースに対して OpenList v4.2.9 が正常に起動すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
请确认以下事项
- 我已确认阅读并同意 AGPL-3.0 第15条(不提供担保,使用风险由使用者承担)。
- 我已确认阅读并同意 AGPL-3.0 第16条(按许可条款限制责任)。
- 我确认问题描述清晰、礼貌,并能帮助开发者定位问题。
- 我已确认没有找到相同的 OpenList issue;GORM 上游另有同一驱动缺陷 issue #350。
- 我确认这是 OpenList v4.2.9 数据库迁移路径触发的问题,不是存储驱动问题。
- 我认为需要 OpenList 升级 PostgreSQL GORM 驱动以修复其依赖集成。
- 这是刚发布的 v4.2.9 回归,GORM 上游修复版本为 v1.6.3,OpenList v4.2.9 仍依赖 v1.6.2。
OpenList 版本(必填)
v4.2.9(从 v4.2.8 升级)
使用的存储驱动(必填)
N/A。错误发生在数据库启动迁移阶段,存储驱动尚未初始化。
问题描述(必填)
从 v4.2.8 升级到 v4.2.9 后,已有 WebDAV 属性数据的 PostgreSQL 实例在启动时退出,服务无法启动。
源码定位:v4.2.9 的 `internal/db/webdav_property_migrate.go` 检查旧索引 `idx_webdav_property`。检测到旧复合索引 `(path, namespace, name)` 后调用 `m.DropIndex(table, index.Name())`,准备切换至 `key_hash` 唯一索引。v4.2.9 使用 `gorm.io/driver/postgres v1.6.2` 和 `gorm.io/gorm v1.31.2`。该 PostgreSQL 驱动版本为 DROP INDEX 生成了无效语句:
```sql
DROP INDEX CURRENT_SCHEMA()."idx_webdav_property"
```
`CURRENT_SCHEMA()` 被放在 schema 标识符位置,PostgreSQL 无法解析,导致迁移失败。GORM PostgreSQL 驱动中有相同错误的 issue #350,已由 PR #353 修复并发布在 v1.6.3。
建议将 `gorm.io/driver/postgres` 升级到至少 v1.6.3,并更新 `go.mod` / `go.sum`。
日志(必填)
```text
FATA[2026-10-25 18:48:14] failed migrate webdav_properties: ERROR: syntax error at or near "CURRENT_SCHEMA" (SQLSTATE 42601)
```
配置文件内容(必填)
数据库类型为 PostgreSQL。为避免泄漏凭据,此报告不包含 DSN、密码或其他敏感配置。PostgreSQL 服务端的具体版本和 schema 配置暂未提供。
复现步骤
- 使用 v4.2.8 和 PostgreSQL 创建并运行 OpenList,使 `webdav_properties` 表及旧复合索引 `idx_webdav_property(path, namespace, name)` 存在。
- 保留原数据库,将 OpenList 升级到 v4.2.9。
- 启动 OpenList,数据库迁移执行旧索引清理时失败并退出。
全新数据库不会命中已有旧索引的删除路径。报告基于用户提供的启动日志及 v4.2.9/GORM 源码与上游缺陷记录;未在此环境连接 PostgreSQL 实例复现。相关 OpenList 变更为 #3259 / commit `0497ee85`。
AI生成内容
- 我使用了AI工具生成此内容
- 我没有使用AI工具生成此内容
AI模型是
OpenAI Codex(用于源码追踪、根因分析和 issue 文案整理)
- 主要言語
- Go
- スター
- 25.3k
- フォーク
- 2.4k
- 平均マージ
- 3日 23時間
- マージ済み PR(30日)
- 19
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
OpenListTeam/OpenList のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
OpenListTeam/OpenList#3201 ·
メンテナーはふだん 2 日以内に返信
-
[BUG] PikPak 上传 no such host:OSS endpoint 落在 .net 侧(无任何 DNS 记录),附取证与已验证修法対応中かも @adsf0427 が 15 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
OpenListTeam/OpenList#2986 · コメント 2 件 ·
メンテナーはふだん 2 日以内に返信
-
[BUG] 解绑 SSO/OIDC 账号后重新登录报错:UNIQUE constraint failed: x_users.username (2067)対応中かも @Suyunmeng が 1 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
OpenListTeam/OpenList#2872 · コメント 2 件 · リアクション 2 件 ·
メンテナーはふだん 2 日以内に返信
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 43/100
OpenListTeam/OpenList#3309 ·
メンテナーはふだん 2 日以内に返信
-
# [BUG] Emby 兼容 API:`/Users/Public` 返回的 UserDto 缺少 `Policy` / `Configuration`,导致严格客户端崩溃対応中かも @PIKACHUIM が 2 日前に担当しました。 オープンinvalid
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
OpenListTeam/OpenList#3301 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
OpenListTeam/OpenList の issue をすべて見る
似ている issue
-
[doc-healer] DDUw improvement: retry integrity-filtered issue reads with direct single-item lookupsオープンautomation documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
bug needs-triage
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
containerd/containerd#14476 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1〜3時間 初心者へのやさしさ 82/100
Infisical/infisical#8987 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
scan framework and scan control accept empty and whitespace-only policy names in Args validation対応中かも @WKr1shna が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信