Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[BUG] v4.2.9 PostgreSQL 启动迁移失败:DROP INDEX CURRENT_SCHEMA() 语法错误

クローズ 初心者向け
#3,267 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

関連するプルリクエストがすでにマージされています。

  • #3269 @renovate による — マージ済み

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
75/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
go, postgresql

調査の方向性

このバグは依存関係のバージョンが誤っていることが原因です。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 配置暂未提供。

复现步骤
  1. 使用 v4.2.8 和 PostgreSQL 创建并运行 OpenList,使 `webdav_properties` 表及旧复合索引 `idx_webdav_property(path, namespace, name)` 存在。
  2. 保留原数据库,将 OpenList 升级到 v4.2.9。
  3. 启动 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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

OpenListTeam/OpenList のほかの issue

OpenListTeam/OpenList の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。