neon-vercel-postgres

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Neon & Vercel Serverless Postgres

Neon & Vercel Serverless Postgres

Status: Production Ready Last Updated: 2025-11-21 Dependencies: None Latest Versions:
@neondatabase/serverless@1.0.2
,
@vercel/postgres@0.10.0
,
drizzle-orm@0.44.7
,
neonctl@2.16.1

状态:生产就绪 最后更新:2025-11-21 依赖项:无 最新版本:
@neondatabase/serverless@1.0.2
,
@vercel/postgres@0.10.0
,
drizzle-orm@0.44.7
,
neonctl@2.16.1

Quick Start (5 Minutes)

快速开始(5分钟)

1. Choose Your Platform

1. 选择你的平台

Option A: Neon Direct (multi-cloud, Cloudflare Workers, any serverless)
bash
bun add @neondatabase/serverless
Option B: Vercel Postgres (Vercel-only, zero-config on Vercel)
bash
bun add @vercel/postgres
Why this matters:
  • Neon direct gives you multi-cloud flexibility and access to branching API
  • Vercel Postgres gives you zero-config on Vercel with automatic environment variables
  • Both are HTTP-based (no TCP), perfect for serverless/edge environments
选项A:直接使用Neon(多云支持,适用于Cloudflare Workers及所有无服务器环境)
bash
bun add @neondatabase/serverless
选项B:Vercel Postgres(仅适用于Vercel,在Vercel上实现零配置)
bash
bun add @vercel/postgres
为何选择不同选项:
  • 直接使用Neon可提供多云灵活性,并支持分支API
  • Vercel Postgres在Vercel上实现零配置,自动配置环境变量
  • 两者均基于HTTP(无TCP),完美适配无服务器/边缘计算环境

2. Get Your Connection String

2. 获取连接字符串

For Neon Direct:
bash
undefined
直接使用Neon时:
bash
undefined

在 https://neon.tech 注册账号

Create a project → Get connection string

创建项目 → 获取连接字符串

Format: postgresql://user:password@ep-xyz-pooler.region.aws.neon.tech/dbname?sslmode=require

格式:postgresql://user:password@ep-xyz-pooler.region.aws.neon.tech/dbname?sslmode=require


**For Vercel Postgres:**
```bash

**使用Vercel Postgres时**:
```bash

In your Vercel project

在你的Vercel项目中执行

vercel postgres create vercel env pull .env.local # Automatically creates POSTGRES_URL and other vars

**CRITICAL:**
- Use **pooled connection string** for serverless (ends with `-pooler.region.aws.neon.tech`)
- Non-pooled connections will exhaust quickly in serverless environments
- Always include `?sslmode=require` parameter
vercel postgres create vercel env pull .env.local # 自动创建POSTGRES_URL及其他环境变量

**关键注意事项**:
- 无服务器环境下请使用**带连接池的连接字符串**(主机名以 `-pooler.region.aws.neon.tech` 结尾)
- 非连接池的连接会在无服务器环境中迅速耗尽资源
- 务必包含 `?sslmode=require` 参数

3. Query Your Database

3. 查询数据库

Neon Direct:
typescript
import { neon } from '@neondatabase/serverless';

const sql = neon(process.env.DATABASE_URL!);

// Simple query
const users = await sql`SELECT * FROM users WHERE id = ${userId}`;

// Transactions
const result = await sql.transaction([
  sql`INSERT INTO users (name) VALUES (${name})`,
  sql`SELECT * FROM users WHERE name = ${name}`
]);
Vercel Postgres:
typescript
import { sql } from '@vercel/postgres';

// Simple query
const { rows } = await sql`SELECT * FROM users WHERE id = ${userId}`;

// Transactions
const client = await sql.connect();
try {
  await client.sql`BEGIN`;
  await client.sql`INSERT INTO users (name) VALUES (${name})`;
  await client.sql`COMMIT`;
} finally {
  client.release();
}
CRITICAL:
  • Use template tag syntax (
    sql`...`
    ) for automatic SQL injection protection
  • Never concatenate strings:
    sql('SELECT * FROM users WHERE id = ' + id)
    ❌

直接使用Neon:
typescript
import { neon } from '@neondatabase/serverless';

const sql = neon(process.env.DATABASE_URL!);

// 简单查询
const users = await sql`SELECT * FROM users WHERE id = ${userId}`;

// 事务处理
const result = await sql.transaction([
  sql`INSERT INTO users (name) VALUES (${name})`,
  sql`SELECT * FROM users WHERE name = ${name}`
]);
使用Vercel Postgres:
typescript
import { sql } from '@vercel/postgres';

// 简单查询
const { rows } = await sql`SELECT * FROM users WHERE id = ${userId}`;

// 事务处理
const client = await sql.connect();
try {
  await client.sql`BEGIN`;
  await client.sql`INSERT INTO users (name) VALUES (${name})`;
  await client.sql`COMMIT`;
} finally {
  client.release();
}
关键注意事项:
  • 使用模板标签语法(
    sql`...`
    )可自动防范SQL注入
  • 切勿拼接字符串:
    sql('SELECT * FROM users WHERE id = ' + id)
    ❌

Critical Rules

重要规则

Always Do

务必遵守

✅ Use pooled connection strings for serverless environments (
-pooler.
in hostname)
✅ Use template tag syntax for queries (
sql`SELECT * FROM users`
) to prevent SQL injection
✅ Include
sslmode=require
in connection strings
✅ Release connections after transactions (Vercel Postgres manual transactions)
✅ Use Drizzle ORM for edge-compatible TypeScript ORM (not Prisma in Cloudflare Workers)
✅ Set connection string as environment variable (never hardcode)
✅ Use Neon branching for preview environments and testing
✅ Monitor connection pool usage in Neon dashboard
✅ Handle errors with try/catch blocks and rollback transactions on failure
✅ Use
RETURNING
clause for INSERT/UPDATE
to get created/updated data in one query
✅ 无服务器环境下使用带连接池的连接字符串(主机名包含
-pooler.
)
✅ 查询时使用模板标签语法(
sql`SELECT * FROM users`
)以防止SQL注入
✅ 连接字符串中包含
sslmode=require
✅ 事务完成后释放连接(Vercel Postgres手动事务场景)
✅ 边缘兼容的TypeScript ORM请使用Drizzle ORM(Cloudflare Workers中请勿使用Prisma)
✅ 连接字符串设置为环境变量(切勿硬编码)
✅ 预览环境和测试场景使用Neon分支功能
✅ 在Neon控制台中监控连接池使用情况
✅ 使用try/catch块处理错误,失败时回滚事务
✅ INSERT/UPDATE操作使用RETURNING子句,一次查询即可获取创建/更新的数据

Never Do

切勿操作

❌ Never use non-pooled connections in serverless functions (will exhaust connection pool)
❌ Never concatenate SQL strings (
'SELECT * FROM users WHERE id = ' + id
) - SQL injection risk
❌ Never omit
sslmode=require
- connections will fail or be insecure
❌ Never forget to
client.release()
in manual Vercel Postgres transactions - connection leak
❌ Never use Prisma in Cloudflare Workers - requires Node.js runtime (use Drizzle instead)
❌ Never hardcode connection strings - use environment variables
❌ Never run migrations from edge functions - use Node.js environment or Neon console
❌ Never commit
.env
files
- add to
.gitignore
❌ Never use
POSTGRES_URL_NON_POOLING
in serverless functions - defeats pooling
❌ Never exceed connection limits - monitor usage and upgrade plan if needed

❌ 无服务器函数中切勿使用非连接池的连接(会耗尽连接池资源)
❌ 切勿拼接SQL字符串(
'SELECT * FROM users WHERE id = ' + id
)- 存在SQL注入风险
❌ 切勿省略
sslmode=require
- 连接会失败或存在安全隐患
❌ Vercel Postgres手动事务中切勿忘记调用
client.release()
- 会导致连接泄漏
❌ Cloudflare Workers中切勿使用Prisma - 依赖Node.js运行时(请改用Drizzle)
❌ 切勿硬编码连接字符串 - 使用环境变量
❌ 边缘函数中切勿执行迁移 - 使用Node.js环境或Neon控制台
❌ 切勿提交
.env
文件
- 将其添加到
.gitignore
❌ 无服务器函数中切勿使用
POSTGRES_URL_NON_POOLING
- 失去连接池的作用
❌ 切勿超出连接限制 - 监控使用情况,必要时升级套餐

Top 5 Errors (See references/error-catalog.md for all 15)

五大常见错误(所有15种错误请参考references/error-catalog.md)

Error #1: Connection Pool Exhausted

错误1:连接池耗尽

Error:
Error: connection pool exhausted
or
too many connections for role
Solution: Use pooled connection string (ends with
-pooler.region.aws.neon.tech
), not non-pooled
错误信息:
Error: connection pool exhausted
或
too many connections for role
解决方案:使用带连接池的连接字符串(以
-pooler.region.aws.neon.tech
结尾),而非非连接池的连接

Error #2: TCP Connections Not Supported

错误2:不支持TCP连接

Error:
Error: TCP connections are not supported in this environment
Solution: Use
@neondatabase/serverless
(HTTP-based), not
pg
or
postgres.js
(TCP-based)
错误信息:
Error: TCP connections are not supported in this environment
解决方案:使用
@neondatabase/serverless
(基于HTTP),而非
pg
或
postgres.js
(基于TCP)

Error #3: SQL Injection from String Concatenation

错误3:字符串拼接导致SQL注入

Error: Successful SQL injection attack Solution: Always use template tags (
sql`SELECT * FROM users WHERE id = ${id}`
), never concatenate strings
错误情况:SQL注入攻击成功 解决方案:始终使用模板标签(
sql`SELECT * FROM users WHERE id = ${id}`
),切勿拼接字符串

Error #4: Missing SSL Mode

错误4:缺少SSL模式

Error:
Error: connection requires SSL
Solution: Always append
?sslmode=require
to connection string
错误信息:
Error: connection requires SSL
解决方案:连接字符串末尾务必添加
?sslmode=require

Error #5: Connection Leak (Vercel Postgres)

错误5:连接泄漏(Vercel Postgres)

Error: Gradually increasing memory usage Solution: Always call
client.release()
in finally block after manual transactions
Load
references/error-catalog.md
for all 15 errors with detailed solutions and troubleshooting guide.

错误现象:内存占用逐渐增加 解决方案:手动事务完成后,务必在finally块中调用
client.release()
所有15种错误及详细解决方案和故障排除指南,请查看
references/error-catalog.md

Common Use Cases

常见使用场景

Use Case 1: Cloudflare Worker with Neon

场景1:Cloudflare Worker搭配Neon

When: Deploying serverless API with Postgres on Cloudflare Workers Quick Pattern:
typescript
import { neon } from '@neondatabase/serverless';

export default {
  async fetch(request: Request, env: Env) {
    const sql = neon(env.DATABASE_URL);
    const users = await sql`SELECT * FROM users`;
    return Response.json(users);
  }
};
Load:
references/common-patterns.md
→ Pattern 1
适用场景:在Cloudflare Workers上部署无服务器API及Postgres 快速示例:
typescript
import { neon } from '@neondatabase/serverless';

export default {
  async fetch(request: Request, env: Env) {
    const sql = neon(env.DATABASE_URL);
    const users = await sql`SELECT * FROM users`;
    return Response.json(users);
  }
};
详情:查看
references/common-patterns.md
→ 模式1

Use Case 2: Next.js Server Actions

场景2:Next.js Server Actions

When: Building Next.js app with Vercel Postgres Quick Pattern:
typescript
'use server';
import { sql } from '@vercel/postgres';

export async function getUsers() {
  const { rows } = await sql`SELECT * FROM users`;
  return rows;
}
Load:
references/common-patterns.md
→ Pattern 2
适用场景:使用Vercel Postgres构建Next.js应用 快速示例:
typescript
'use server';
import { sql } from '@vercel/postgres';

export async function getUsers() {
  const { rows } = await sql`SELECT * FROM users`;
  return rows;
}
详情:查看
references/common-patterns.md
→ 模式2

Use Case 3: Type-Safe Queries with Drizzle

场景3:搭配Drizzle实现类型安全查询

When: Need full TypeScript type safety and edge compatibility Load:
references/common-patterns.md
→ Pattern 3
适用场景:需要完整的TypeScript类型安全及边缘兼容性 详情:查看
references/common-patterns.md
→ 模式3

Use Case 4: Database Transactions

场景4:数据库事务

When: Multiple operations must all succeed or all fail (e.g., money transfers) Load:
references/common-patterns.md
→ Pattern 4
适用场景:多个操作必须全部成功或全部失败(如资金转账) 详情:查看
references/common-patterns.md
→ 模式4

Use Case 5: Preview Environments with Branching

场景5:分支功能实现预览环境

When: Need isolated database for each pull request/preview deployment Load:
references/common-patterns.md
→ Pattern 5

适用场景:为每个拉取请求/预览部署提供独立数据库 详情:查看
references/common-patterns.md
→ 模式5

When to Load References

何时参考文档

Load
references/setup-guide.md
when
:
  • User needs complete 7-step setup process
  • User asks about Drizzle ORM or Prisma integration
  • User needs help with environment variables or connection strings
  • User asks about deployment to Cloudflare Workers or Vercel
Load
references/error-catalog.md
when
:
  • Encountering any connection, query, or deployment errors
  • User reports "connection pool exhausted" or timeout errors
  • User asks about SQL injection prevention
  • User needs troubleshooting for Prisma or Drizzle issues
Load
references/common-patterns.md
when
:
  • User asks for code examples or templates
  • User needs to implement transactions, pagination, or search
  • User asks about Server Actions, Cloudflare Workers, or Drizzle patterns
  • User wants to see production-tested patterns
Load
references/advanced-topics.md
when
:
  • User asks about Neon branching or database workflows
  • User needs connection pooling deep dive
  • User asks about performance optimization or query tuning
  • User needs security best practices (RLS, encryption, audit logging)
  • User asks about backups or disaster recovery

当以下情况时查看
references/setup-guide.md
:
  • 需要完整的7步设置流程
  • 询问Drizzle ORM或Prisma集成相关问题
  • 需要环境变量或连接字符串的配置帮助
  • 询问部署到Cloudflare Workers或Vercel的相关问题
当以下情况时查看
references/error-catalog.md
:
  • 遇到任何连接、查询或部署错误
  • 用户反馈“连接池耗尽”或超时错误
  • 询问SQL注入防护相关问题
  • 需要Prisma或Drizzle的故障排除方案
当以下情况时查看
references/common-patterns.md
:
  • 询问代码示例或模板
  • 需要实现事务、分页或搜索功能
  • 询问Server Actions、Cloudflare Workers或Drizzle相关模式
  • 查看经过生产验证的模式
当以下情况时查看
references/advanced-topics.md
:
  • 询问Neon分支或数据库工作流
  • 需要深入了解连接池
  • 询问性能优化或查询调优
  • 需要安全最佳实践(RLS、加密、审计日志)
  • 询问备份或灾难恢复

Configuration Files Reference

配置文件参考

package.json (Neon Direct)

package.json(直接使用Neon)

json
{
  "dependencies": {
    "@neondatabase/serverless": "^1.0.2"
  }
}
json
{
  "dependencies": {
    "@neondatabase/serverless": "^1.0.2"
  }
}

package.json (Vercel Postgres)

package.json(使用Vercel Postgres)

json
{
  "dependencies": {
    "@vercel/postgres": "^0.10.0"
  }
}
json
{
  "dependencies": {
    "@vercel/postgres": "^0.10.0"
  }
}

package.json (With Drizzle ORM)

package.json(搭配Drizzle ORM)

json
{
  "dependencies": {
    "@neondatabase/serverless": "^1.0.2",
    "drizzle-orm": "^0.44.7"
  },
  "devDependencies": {
    "drizzle-kit": "^0.31.0"
  },
  "scripts": {
    "db:generate": "drizzle-kit generate",
    "db:migrate": "drizzle-kit migrate",
    "db:studio": "drizzle-kit studio"
  }
}
json
{
  "dependencies": {
    "@neondatabase/serverless": "^1.0.2",
    "drizzle-orm": "^0.44.7"
  },
  "devDependencies": {
    "drizzle-kit": "^0.31.0"
  },
  "scripts": {
    "db:generate": "drizzle-kit generate",
    "db:migrate": "drizzle-kit migrate",
    "db:studio": "drizzle-kit studio"
  }
}

drizzle.config.ts

drizzle.config.ts

typescript
import { defineConfig } from 'drizzle-kit';

export default defineConfig({
  schema: './db/schema.ts',
  out: './db/migrations',
  dialect: 'postgresql',
  dbCredentials: {
    url: process.env.DATABASE_URL!
  }
});
Why these settings:
  • @neondatabase/serverless
    is edge-compatible (HTTP/WebSocket-based)
  • @vercel/postgres
    provides zero-config on Vercel
  • drizzle-orm
    works in all runtimes (Cloudflare Workers, Vercel Edge, Node.js)
  • drizzle-kit
    handles migrations and schema generation

typescript
import { defineConfig } from 'drizzle-kit';

export default defineConfig({
  schema: './db/schema.ts',
  out: './db/migrations',
  dialect: 'postgresql',
  dbCredentials: {
    url: process.env.DATABASE_URL!
  }
});
为何选择这些配置:
  • @neondatabase/serverless
    兼容边缘环境(基于HTTP/WebSocket)
  • @vercel/postgres
    在Vercel上实现零配置
  • drizzle-orm
    支持所有运行时(Cloudflare Workers、Vercel Edge、Node.js)
  • drizzle-kit
    处理迁移和 schema 生成

Using Bundled Resources

使用捆绑资源

Templates (templates/)

模板(templates/)

drizzle-schema.ts - Complete Drizzle schema with users, posts, relations
typescript
// See templates/drizzle-schema.ts for full example
drizzle-queries.ts - Common query patterns (SELECT, INSERT, UPDATE, DELETE, joins)
typescript
// See templates/drizzle-queries.ts for full example
drizzle-migrations-workflow.md - Complete migration workflow guide
markdown
// See templates/drizzle-migrations-workflow.md for full guide
neon-basic-queries.ts - Raw SQL query patterns with Neon
typescript
// See templates/neon-basic-queries.ts for full example
package.json - Complete dependency configuration
json
// See templates/package.json for full config
drizzle-schema.ts - 包含用户、帖子及关联关系的完整Drizzle schema
typescript
// 完整示例请查看templates/drizzle-schema.ts
drizzle-queries.ts - 常见查询模式(SELECT、INSERT、UPDATE、DELETE、关联查询)
typescript
// 完整示例请查看templates/drizzle-queries.ts
drizzle-migrations-workflow.md - 完整的迁移工作流指南
markdown
// 完整指南请查看templates/drizzle-migrations-workflow.md
neon-basic-queries.ts - Neon原生SQL查询模式
typescript
// 完整示例请查看templates/neon-basic-queries.ts
package.json - 完整的依赖配置
json
// 完整配置请查看templates/package.json

References (references/)

参考文档(references/)

  • setup-guide.md - Complete 7-step setup process (installation → deployment)
  • error-catalog.md - All 15 errors with solutions and troubleshooting
  • common-patterns.md - 5+ production patterns (Cloudflare Workers, Next.js, Drizzle, transactions, branching)
  • advanced-topics.md - Branching workflows, connection pooling, performance, security

  • setup-guide.md - 完整的7步设置流程(安装 → 部署)
  • error-catalog.md - 所有15种错误及解决方案、故障排除
  • common-patterns.md - 5+种生产验证模式(Cloudflare Workers、Next.js、Drizzle、事务、分支)
  • advanced-topics.md - 分支工作流、连接池、性能优化、安全

Dependencies

依赖项

Required:
  • @neondatabase/serverless@^1.0.2
    - Neon serverless Postgres client (HTTP/WebSocket-based)
  • @vercel/postgres@^0.10.0
    - Vercel Postgres client (alternative to Neon direct, Vercel-specific)
Optional:
  • drizzle-orm@^0.44.7
    - TypeScript ORM (edge-compatible, recommended)
  • drizzle-kit@^0.31.0
    - Drizzle schema migrations and introspection
  • @prisma/client@^6.10.0
    - Prisma ORM (Node.js only, not edge-compatible)
  • @prisma/adapter-neon@^6.10.0
    - Prisma adapter for Neon serverless
  • neonctl@^2.16.1
    - Neon CLI for database management
  • zod@^3.24.0
    - Schema validation for input sanitization

必填:
  • @neondatabase/serverless@^1.0.2
    - Neon无服务器Postgres客户端(基于HTTP/WebSocket)
  • @vercel/postgres@^0.10.0
    - Vercel Postgres客户端(Neon直接使用的替代方案,仅适用于Vercel)
可选:
  • drizzle-orm@^0.44.7
    - TypeScript ORM(兼容边缘环境,推荐使用)
  • drizzle-kit@^0.31.0
    - Drizzle schema迁移和自省工具
  • @prisma/client@^6.10.0
    - Prisma ORM(仅支持Node.js,不兼容边缘环境)
  • @prisma/adapter-neon@^6.10.0
    - Prisma Neon无服务器适配器
  • neonctl@^2.16.1
    - Neon数据库管理CLI
  • zod@^3.24.0
    - 输入验证schema工具

Official Documentation

官方文档



Package Versions (Verified 2025-10-29)

包版本(2025-10-29已验证)

json
{
  "dependencies": {
    "@neondatabase/serverless": "^1.0.2",
    "@vercel/postgres": "^0.10.0",
    "drizzle-orm": "^0.44.7"
  },
  "devDependencies": {
    "drizzle-kit": "^0.31.0",
    "neonctl": "^2.16.1"
  }
}
Latest Prisma (if needed):
json
{
  "dependencies": {
    "@prisma/client": "^6.10.0",
    "@prisma/adapter-neon": "^6.10.0"
  },
  "devDependencies": {
    "prisma": "^6.10.0"
  }
}

json
{
  "dependencies": {
    "@neondatabase/serverless": "^1.0.2",
    "@vercel/postgres": "^0.10.0",
    "drizzle-orm": "^0.44.7"
  },
  "devDependencies": {
    "drizzle-kit": "^0.31.0",
    "neonctl": "^2.16.1"
  }
}
最新Prisma版本(如需使用):
json
{
  "dependencies": {
    "@prisma/client": "^6.10.0",
    "@prisma/adapter-neon": "^6.10.0"
  },
  "devDependencies": {
    "prisma": "^6.10.0"
  }
}

Production Example

生产示例

This skill is based on production deployments of Neon and Vercel Postgres:
  • Cloudflare Workers: API with 50K+ daily requests, 0 connection errors
  • Vercel Next.js App: E-commerce site with 100K+ monthly users
  • Build Time: <5 minutes (initial setup), <30s (deployment)
  • Errors: 0 (all 15 known issues prevented)
  • Validation: ✅ Connection pooling, ✅ SQL injection prevention, ✅ Transaction handling, ✅ Branching workflows

本技能基于Neon和Vercel Postgres的生产部署实践:
  • Cloudflare Workers: 日请求量5万+的API,无连接错误
  • Vercel Next.js应用: 月活10万+的电商网站
  • 构建时间: 初始设置<5分钟,部署<30秒
  • 错误率: 0(已防范所有15种已知问题)
  • 验证项: ✅ 连接池, ✅ SQL注入防护, ✅ 事务处理, ✅ 分支工作流

Complete Setup Checklist

完整设置检查清单

Use this checklist to verify your setup:
  • Package installed (
    @neondatabase/serverless
    or
    @vercel/postgres
    )
  • Neon database created (or Vercel Postgres provisioned)
  • Pooled connection string obtained (ends with
    -pooler.
    )
  • Connection string includes
    ?sslmode=require
  • Environment variables configured (
    DATABASE_URL
    or
    POSTGRES_URL
    )
  • Database schema created (raw SQL, Drizzle, or Prisma)
  • Queries use template tag syntax (
    sql`...`
    )
  • Transactions use proper try/catch and release connections
  • Connection pooling verified (using pooled connection string)
  • ORM choice appropriate for runtime (Drizzle for edge, Prisma for Node.js)
  • Tested locally with dev database
  • Deployed and tested in production/preview environment
  • Connection monitoring set up in Neon dashboard

Questions? Issues?
  1. Check
    references/error-catalog.md
    for all 15 errors and troubleshooting
  2. Review
    references/setup-guide.md
    for complete 7-step setup process
  3. See
    references/common-patterns.md
    for production-tested code examples
  4. Check official docs: https://neon.tech/docs
  5. Ensure you're using pooled connection string for serverless environments
  6. Verify
    sslmode=require
    is in connection string
使用此清单验证你的设置:
  • 已安装包(
    @neondatabase/serverless
    或
    @vercel/postgres
    )
  • 已创建Neon数据库(或已配置Vercel Postgres)
  • 已获取带连接池的连接字符串(以
    -pooler.
    结尾)
  • 连接字符串包含
    ?sslmode=require
  • 已配置环境变量(
    DATABASE_URL
    或
    POSTGRES_URL
    )
  • 已创建数据库schema(原生SQL、Drizzle或Prisma)
  • 查询使用模板标签语法(
    sql`...`
    )
  • 事务使用正确的try/catch并释放连接
  • 已验证连接池配置(使用带连接池的连接字符串)
  • ORM选择与运行时匹配(边缘环境用Drizzle,Node.js用Prisma)
  • 已使用开发数据库本地测试
  • 已部署并在生产/预览环境中测试
  • 已在Neon控制台中设置连接监控

有疑问?遇到问题?
  1. 查看
    references/error-catalog.md
    获取所有15种错误及故障排除方案
  2. 查看
    references/setup-guide.md
    获取完整的7步设置流程
  3. 查看
    references/common-patterns.md
    获取经过生产验证的代码示例
  4. 查看官方文档: https://neon.tech/docs
  5. 确保无服务器环境下使用带连接池的连接字符串
  6. 验证连接字符串中包含
    sslmode=require