---
title: "Sequelize 连接 OceanBase 数据库 - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: Sequelize 连接 OceanBase 数据库 功能适用性 Sequelize 适用于 OceanBase 数据库 MySQL 模式。 Sequelize 是一个基于 Promise 的 Node.js ORM 工具，支持 Postgres、MySQL、SQLite 和 SQL Server 等多种数据库。本文…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.5 LTS

# Sequelize 连接 OceanBase 数据库

更新时间：2026-04-09 14:12:04

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/680.ecological-integration/200.orms-frameworks/600.nodejs/100.sequelize-connection-oceanbase-database-program.md)

#### 功能适用性

Sequelize 适用于 OceanBase 数据库 MySQL 模式。

Sequelize 是一个基于 Promise 的 Node.js ORM 工具，支持 Postgres、MySQL、SQLite 和 SQL Server 等多种数据库。本文将介绍如何使用 Sequelize 连接 OceanBase 数据库的 MySQL 模式。

## 前提条件

- 已安装 Node.js 14.0.0 或更高版本
 - 已安装 npm 或 yarn 包管理器
 - 已部署 OceanBase 数据库并且创建了 MySQL 模式租户
 - 确保网络连接正常

## 操作步骤

1. 检查 Node.js 和 npm 版本
 2. 安装必要的依赖
 3. 获取 OceanBase 数据库连接信息
 4. 创建并配置项目
 5. 运行示例程序

### 步骤一：检查 Node.js 和 npm 版本

打开终端，运行以下命令检查 Node.js 和 npm 的版本：

```bash
node -v
npm -v

```

### 步骤二：安装必要的依赖

1. 创建项目目录并初始化：

   ```bash
   mkdir sequelize-oceanbase-demo
   cd sequelize-oceanbase-demo
   npm init -y

   ```
 2. 安装 Sequelize 和 MySQL2 驱动：

   ```bash
   npm install sequelize mysql2

   # 如果使用 TypeScript
   npm install -D typescript @types/node @types/sequelize

   # 初始化 TypeScript 配置
   npx tsc --init

   ```

### 步骤三：获取 OceanBase 数据库连接信息

联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接信息。

```bash
mysql -h$host -P$port -u$user_name -p$password -D$database_name

```

**参数说明：**

- `$host`：提供 OceanBase 数据库连接 IP
 - `$port`：提供 OceanBase 数据库连接端口
 - `$database_name`：需要访问的数据库名称
 - `$user_name`：提供租户的连接账户
 - `$password`：提供账户密码

### 步骤四：创建并配置项目

1. 创建项目结构：

   ```text
   sequelize-oceanbase-demo/
   ├── src/
   │   ├── models/
   │   │   └── index.js
   │   └── index.js
   ├── .env
   └── package.json

   ```
 2. 配置数据库连接：

   在项目根目录创建 `.env` 文件：

   ```env
   DB_HOST=your_host
   DB_PORT=2881
   DB_USER=your_username
   DB_PASSWORD=your_password
   DB_NAME=your_database

   ```
 3. 创建数据库连接：

   创建 `src/models/index.js` 文件：

   ```javascript
   require('dotenv').config();
   const { Sequelize } = require('sequelize');

   const sequelize = new Sequelize(
     process.env.DB_NAME,
     process.env.DB_USER,
     process.env.DB_PASSWORD,
     {
       host: process.env.DB_HOST,
       dialect: 'mysql',
       port: process.env.DB_PORT,
       logging: console.log, // 显示 SQL 查询日志
       pool: {
         max: 5,
         min: 0,
         acquire: 30000,
         idle: 10000
       }
     }
   );

   module.exports = sequelize;

   ```
 4. 测试连接：

   创建 `src/index.js` 文件：

   ```javascript
   const sequelize = require('./models/index');

   async function testConnection() {
     try {
       await sequelize.authenticate();
       console.log('连接成功');
     } catch (error) {
       console.error('连接失败:', error);
     }
   }

   testConnection();

   ```

### 步骤五：运行示例程序

1. 定义模型：

   ```javascript
   const { DataTypes } = require('sequelize');

   const User = sequelize.define('User', {
     username: {
       type: DataTypes.STRING,
       allowNull: false
     },
     email: {
       type: DataTypes.STRING,
       validate: {
         isEmail: true
       }
     }
   }, {
     tableName: 'users'
   });

   ```

## 完整示例

以下是一个完整的示例，展示如何使用 Sequelize 进行 CRUD 操作：

```javascript
const { Sequelize, DataTypes } = require('sequelize');

// 1. 创建连接
const sequelize = new Sequelize('database_name', 'username', 'password', {
  host: 'oceanbase-host',
  port: 2881,
  dialect: 'mysql'
});

// 2. 定义模型
const User = sequelize.define('User', {
  username: DataTypes.STRING,
  email: DataTypes.STRING
});

// 3. 同步模型到数据库
async function syncDatabase() {
  try {
    await sequelize.sync();
    console.log('数据库同步成功');
  } catch (error) {
    console.error('数据库同步失败:', error);
  }
}

// 4. CRUD 操作
async function crudOperations() {
  // 创建
  const user = await User.create({
    username: 'testuser',
    email: 'test@example.com'
  });

  // 查询
  const users = await User.findAll();
  console.log(users);

  // 更新
  await User.update(
    { email: 'new@example.com' },
    { where: { id: 1 } }
  );

  // 删除
  await User.destroy({
    where: { id: 1 }
  });
}

// 执行
syncDatabase().then(() => crudOperations());

// 使用事务的示例
async function createWithTransaction() {
  const t = await sequelize.transaction();

  try {
    const user = await User.create({
      username: 'transaction_user',
      email: 'transaction@example.com'
    }, { transaction: t });

    await t.commit();
    return user;
  } catch (error) {
    await t.rollback();
    throw error;
  }
}

syncDatabase().then(() => createWithTransaction());

```

## 相关文档

- [Sequelize 官方文档](https://sequelize.org/)
 - [OceanBase 文档](https://www.oceanbase.com/docs)
 - [Node.js 文档](https://nodejs.org/en/docs/)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
