You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

一键部署Payload Website Starter时如何修复DrizzleQueryError?

部署Vercel Payload Website Starter模板时的数据库连接错误

使用Vercel的Payload Website Starter一键部署模板,所有连接字符串已自动添加,但部署时出现以下错误。尝试过重新部署、更新环境变量,模板本应无需手动修改代码即可运行,问题仍未解决。

错误日志:

DrizzleQueryError: Failed query: SELECT to_regclass('"payload_migrations"') AS exists;
params: 
    at NodePgPreparedQuery.queryWithCache (/vercel/path0/node_modules/src/pg-core/session.ts:74:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async migrationTableExists (/vercel/path0/node_modules/@payloadcms/drizzle/src/utilities/migrationTableExists.ts:27:18)
    at async Object.migrate (/vercel/path0/node_modules/@payloadcms/drizzle/src/migrate.ts:37:29)
    at async migrate (/vercel/path0/node_modules/payload/src/bin/migrate.ts:87:7)
    at async runBinScript (/vercel/path0/node_modules/payload/dist/bin/index.js:112:9)
    at async bin (/vercel/path0/node_modules/payload/dist/bin/index.js:45:29)
    at async start (file:///vercel/path0/node_modules/payload/bin.js:30:7) {
  query: `SELECT to_regclass('"payload_migrations"') AS exists;`,
  params: [],
  cause: ErrorEvent {
    [Symbol(kTarget)]: WebSocket {
      _events: [Object: null prototype] {
        error: [Function: onError] {
          [Symbol(kIsForOnEventAttribute)]: false,
          [Symbol(kListener)]: [Function (anonymous)]
        },
        message: [Function: onMessage] {
          [Symbol(kIsForOnEventAttribute)]: false,
          [Symbol(kListener)]: [Function (anonymous)]
        },
        close: [Function: onClose] {
          [Symbol(kIsForOnEventAttribute)]: false,
          [Symbol(kListener)]: [Function (anonymous)]
        },
        open: [Function: onOpen] {
          [Symbol(kIsForOnEventAttribute)]: false,
          [Symbol(kListener)]: [Function: handleWebSocketOpen]
        }
      },
      _eventsCount: 4,
      _maxListeners: undefined,
      _binaryType: 'arraybuffer',
      _closeCode: 1006,
      _closeFrameReceived: false,
      _closeFrameSent: false,
      _closeMessage: Buffer(0) [Uint8Array] [],
      _closeTimer: null,
      _errorEmitted: true,
      _extensions: {},
      _paused: false,
      _protocol: '',
      _readyState: 3,
      _receiver: null,
      _sender: null,
      _socket: null,
      _bufferedAmount: 0,
      _isServer: false,
      _redirects: 0,
      _autoPong: true,
      _url: 'wss://localhost/v2',
      _req: null,
      [Symbol(shapeMode)]: false,
      [Symbol(kCapture)]: false
    },
    [Symbol(kType)]: 'error',
    [Symbol(kError)]: Error: connect ECONNREFUSED 127.0.0.1:443
        at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1637:16) {
      errno: -111,
      code: 'ECONNREFUSED',
      syscall: 'connect',
      address: '127.0.0.1',
      port: 443
    },
    [Symbol(kMessage)]: 'connect ECONNREFUSED 127.0.0.1:443'
  }
}

问题分析

从日志里的connect ECONNREFUSED 127.0.0.1:443和WebSocket地址wss://localhost/v2可以看出,程序在尝试连接本地443端口,但Vercel部署环境中没有本地数据库实例,说明数据库连接配置存在异常。

排查步骤

  • 核对DATABASE_URL环境变量:确认是否正确指向远程数据库(如Vercel Postgres),检查是否有拼写错误、缺失sslmode=require这类必要参数
  • 确认数据库状态:检查远程数据库实例是否正常运行,是否开放了Vercel部署环境的访问权限
  • 检查配置文件:查看项目中的payload.config.ts或drizzle.config.ts,是否存在硬编码的本地连接地址,覆盖了环境变量
  • 验证环境变量生效:在Vercel部署控制台中强制触发重新构建,确保新的环境变量被加载
  • 检查数据库权限:确认数据库是否允许Vercel的IP段访问,是否需要配置SSL连接

内容的提问来源于stack exchange,提问作者Lahiru Lanka Rathnayaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 04:04:50