以下是如何从 Neon 切换到 PlanetScale。
1. 在 PlanetScale 上创建新数据库
在 PlanetScale 上创建数据库后,您将获得一个连接字符串。它看起来像这样:
mysql://<username>:<password>@<region>.aws.connect.psdb.cloud/<database>
请妥善保存此连接字符串,下一步将会用到它。
2. 更新环境变量
更新环境变量以使用新的 PlanetScale 连接字符串:
DATABASE_URL="mysql://<username>:<password>@<region>.aws.connect.psdb.cloud/<database>"
DATABASE_URL="mysql://<username>:<password>@<region>.aws.connect.psdb.cloud/<database>"
等等。
3. 更换 @repo/database
中的依赖项
卸载现有依赖项…
pnpm remove @neondatabase/serverless @prisma/adapter-neon ws @types/ws --filter @repo/database
…并安装新的依赖项:
pnpm add @planetscale/database @prisma/adapter-planetscale --filter @repo/database
4. 更新数据库连接代码
更新数据库连接代码以使用新的 PlanetScale 适配器:
packages/database/index.ts
import 'server-only';
import { Client, connect } from '@planetscale/database';
import { PrismaPlanetScale } from '@prisma/adapter-planetscale';
import { PrismaClient } from '@prisma/client';
import { env } from '@repo/env';
declare global {
var cachedPrisma: PrismaClient | undefined;
}
const client = connect({ url: env.DATABASE_URL });
const adapter = new PrismaPlanetScale(client);
export const database = new PrismaClient({ adapter });
5. 更新 Prisma 模式
更新 Prisma 模式以使用新的数据库提供商:
packages/database/prisma/schema.prisma
// 这是您的 Prisma 模式文件,
// 了解更多信息,请参阅文档:https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
relationMode = "prisma"
}
// 这是一个存根模型。
// 删除它并添加您自己的 Prisma 模型。
model Page {
id Int @id @default(autoincrement())
email String @unique
name String?
}
6. 添加 dev
脚本
在 package.json
中添加 dev
脚本:
packages/database/package.json
{
"scripts": {
"dev": "pscale connect [database_name] [branch_name] --port 3309"
}
}