# SQLite (/docs/adapters/sqlite)

将 Better Auth 与 SQLite 集成。



SQLite 是一种轻量级、无服务器、自包含的 SQL 数据库引擎，广泛用于应用程序中的本地数据存储。\
查看更多信息，请访问[这里。](https://www.sqlite.org/)

## 示例用法 [#示例用法]

Better Auth 支持多种 SQLite 驱动程序。请选择最适合您环境的驱动程序：

### Better-SQLite3（推荐） [#better-sqlite3推荐]

Node.js 中最流行且稳定的 SQLite 驱动程序：

```ts title="auth.ts"
import { betterAuth } from "better-auth";
import Database from "better-sqlite3";

export const auth = betterAuth({
  database: new Database("database.sqlite"),
});
```

<Callout>
  欲了解更多信息，请参考 Kysely 文档中的
  [SqliteDialect](https://kysely-org.github.io/kysely-apidoc/classes/SqliteDialect.html)。
</Callout>

### Node.js 内置 SQLite（候选发布版） [#nodejs-内置-sqlite候选发布版]

<Callout type="info">
  `node:sqlite` 模块在 Node.js 24.15.0 中是一个**候选发布版**。它要求 Node.js 版本为 22.5.0 或更高，并且自 Node.js 22.13.0 / 23.4.0 起不再需要 `--experimental-sqlite` 标志。
</Callout>

从 Node.js 22.5.0 开始，您可以使用内置的 [SQLite](https://nodejs.org/api/sqlite.html) 模块：

```ts title="auth.ts"
import { betterAuth } from "better-auth";
import { DatabaseSync } from "node:sqlite";

export const auth = betterAuth({
  database: new DatabaseSync("database.sqlite"),
});
```

要运行您的应用程序，请使用以下命令：

```bash
node your-app.js
```

### Bun 内置 SQLite [#bun-内置-sqlite]

<Callout type="warning">
  使用 `bunx` 并添加 `--bun` 标志执行 CLI 命令，防止出现无法识别 `bun:sqlite` 模块相关的类型错误，例如：`bunx --bun auth@latest generate`
</Callout>

您还可以使用 Bun 内置的 [SQLite](https://bun.com/docs/api/sqlite) 模块，语法与 Node.js 版本类似：

```ts title="auth.ts"
import { betterAuth } from "better-auth";
import { Database } from "bun:sqlite";

export const auth = betterAuth({
  database: new Database("database.sqlite"),
});
```

## 架构生成与迁移 [#架构生成与迁移]

[Better Auth CLI](/docs/concepts/cli) 允许您根据 Better Auth 配置和插件生成或迁移数据库架构。

<table>
  <thead>
    <tr className="border-b">
      <th>
        <p className="font-bold text-[16px] mb-1">
          SQLite 架构生成
        </p>
      </th>

      <th>
        <p className="font-bold text-[16px] mb-1">
          SQLite 架构迁移
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr className="h-10">
      <td>
        ✅ 支持
      </td>

      <td>
        ✅ 支持
      </td>
    </tr>
  </tbody>
</table>

<Tabs items="[&#x22;migrate&#x22;, &#x22;generate&#x22;]">
  <Tab value="migrate">
    <CodeBlockTabs defaultValue="npm" groupId="persist-install">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="npm">
          npm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="pnpm">
          pnpm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="yarn">
          yarn
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="bun">
          bun
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="npm">
        ```bash
        npx auth@latest migrate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="pnpm">
        ```bash
        pnpm dlx auth@latest migrate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="yarn">
        ```bash
        yarn dlx auth@latest migrate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="bun">
        ```bash
        bun x auth@latest migrate
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Tab>

  <Tab value="generate">
    <CodeBlockTabs defaultValue="npm" groupId="persist-install">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="npm">
          npm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="pnpm">
          pnpm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="yarn">
          yarn
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="bun">
          bun
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="npm">
        ```bash
        npx auth@latest generate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="pnpm">
        ```bash
        pnpm dlx auth@latest generate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="yarn">
        ```bash
        yarn dlx auth@latest generate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="bun">
        ```bash
        bun x auth@latest generate
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Tab>
</Tabs>

## 联接 [#联接]

当 Better Auth 需要在单个查询中从多个表获取相关数据时，数据库联接非常有用。\
像 `/get-session`、`/get-full-organization` 等许多端点都能从此功能中受益匪浅。根据数据库延迟的不同，性能可提升 2 到 3 倍。

自 `1.4.0` 版本起，Kysely SQLite 方言开箱即支持联接。\
要启用此功能，请在您的 auth 配置中将 `advanced.database.joins` 设置为 `true`。

```ts title="auth.ts"
import { betterAuth } from "better-auth";

export const auth = betterAuth({
  advanced: {
    database: {
      joins: true,
    },
  },
});
```

## 其他信息 [#其他信息]

SQLite 通过 [Kysely](https://kysely.dev/) 适配器在底层提供支持，Kysely 支持的任何数据库同样受到支持。(<Link href="/docs/adapters/other-relational-databases">点击这里了解更多</Link>)

如果您希望提升性能或寻求优化建议，请查看我们的 <Link href="/docs/guides/optimizing-for-performance">性能优化指南</Link>。

