OceanBase
English日本語简体中文
ドキュメントホーム
製品
エコシステム
リリース

データベース

OceanBase CloudOceanBaseデータベース

データベース

OceanBase CloudOceanBaseデータベース
OceanBase CloudOceanBaseデータベース

OceanBaseデータベース

  • エコシステム統合の概要
  • ORMフレームワーク
    • Java
      • SpringBootサンプルプログラム
      • SpringBatchサンプルプログラム
      • Spring JDBCサンプルプログラム
      • SpringDataJPAサンプルプログラム
      • Hibernateサンプルプログラム
      • MyBatisサンプルプログラム
    • Python
      • SQLAlchemyによるOceanBaseデータベース接続サンプルプログラム
      • peeweeによるOceanBaseデータベース接続サンプルプログラム
      • Tortoise ORM による OceanBase データベース接続サンプルプログラム
    • Go
      • GORMサンプルプログラム
    • Rust
      • SeaORM による OceanBase データベース接続サンプルプログラム
    • Ruby
      • ActiveRecordによるOceanBaseデータベース接続サンプルプログラム
      • Sequel で OceanBase データベースに接続するサンプルプログラム
      • Ruby on RailsによるOceanBaseデータベース接続サンプルプログラム
    • Node.js
      • SequelizeでOceanBaseデータベースに接続する
      • TypeORMを使用してOceanBaseデータベースに接続する
      • Prismaを使用してOceanBaseデータベースに接続する
      • Drizzle ORMを使用してOceanBaseデータベースに接続する
    • C#
      • Dapperを使用してOceanBaseデータベースに接続する
      • SqlSugarを使用してOceanBaseデータベースに接続する
      • FreeSQLを使用してOceanBaseデータベースに接続する
    • PHP
      • Yii 2.0 ORMサンプルプログラム
      • Laravel Eloquent ORMサンプルプログラム
  • データベースのバージョン管理
    • Liquibaseを使用したOceanBaseデータベースのバージョンの管理
    • Flywayを使用してOceanBaseデータベースを統合し、バージョン管理を実現する
  • データ統合
    • dbtを使用したOceanBaseデータの分析
    • Flink DirectLoadを使用したOceanBaseのダイレクトインポート
    • SeaTunnelを使用したOceanBaseデータの読み取りと同期
    • Maxwellを使用したOceanBaseデータの読み取り
    • Debeziumを使用してOceanBaseに接続し、データを取得する
    • Spark Catalogを使用してOceanBaseデータベースに接続する
    • Apache NiFiを使用してOceanBaseデータベースと統合する
  • SQL開発
    • WebLogicを使用してOceanBaseデータベースに接続する
    • DBeaverを使用してOceanBaseデータベースに接続する
    • Navicatを使用してOceanBaseデータベースに接続する
    • DataGripでOceanBaseデータベースに接続する
    • TablePlusでOceanBaseデータベースに接続する
    • DMSを使用したOceanBaseデータベースの管理
  • 編成とスケジューリング
    • AirflowとOceanBaseデータベースの連携
    • PowerJobとOceanBaseデータベースの連携
    • DolphinSchedulerにOceanBaseデータソースを設定する
    • LinkisとOceanBaseデータベースの統合
  • 可視化ツール
    • SupersetとOceanBaseを使用したデータ分析
    • Power BIでOceanBaseに接続してデータを取得する
    • Quick BIでOceanBaseに接続してデータを取得する
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • データベース管理
    • NineDataを使用したOceanBaseデータソースの管理
    • Bytebaseを使用したOceanBaseインスタンスの管理
  • AI
    • OpenAI
    • Qwen
    • OceanBaseデータベースとLangChainの統合
    • OceanBaseデータベースのベクトル検索機能とLlamaIndexの連携
    • OceanBaseデータベースのベクトル検索機能とDifyの連携
    • OceanBaseデータベースとn8nの連携
    • OceanBase MCP ServerとTraeの連携
    • OceanBaseデータベースとSpring AI Alibabaの連携
    • OceanBase MCP ServerとClineの連携
    • OceanBase MCP ServerとCursorの連携
    • OceanBase MCP ServerとContinueの連携
    • Google GenAI Toolboxを使用して独自のOceanBase MCP Serverを構築する
    • OceanBaseデータベースとCamelAIの連携
    • OceanBase VectorとFirecrawlの連携
    • OceanBase VectorとHugging Faceの連携
    • OceanBase VectorとOllamaの連携
    • OceanBaseデータベースとGoogle Geminiの連携
    • OceanBase VectorとCloudflare Workers AIの連携
    • OceanBase VectorとJina AIの連携
    • OceanBase MCP ServerとAugment Codeの連携
    • OceanBase MCP ServerとClaude Codeの連携
    • OceanBase MCP ServerとKiroの連携

PDF をダウンロード

ドキュメントフィードバック
  1. ドキュメントセンター
  2. OceanBaseデータベース
  3. master

Drizzle ORMを使用してOceanBaseデータベースに接続する

最終更新:2026-10-10 03:12:37

前提条件
手順
ステップ1:Node.jsとnpmのバージョンを確認する
ステップ2:必要な依存関係をインストールする
ステップ3:データベース接続を設定する
ステップ3:OceanBaseデータベース接続情報を取得する
ステップ3:データテーブルモデルを定義する
ステップ4:データベース接続を作成する
ステップ5:CRUD操作の例
実行例
関連ドキュメント

適用対象

Drizzle ORMはOceanBaseデータベースのMySQLモードで動作します。

Drizzle ORMは軽量で型安全なTypeScript ORMです。本記事では、Drizzle ORMを使用してOceanBaseデータベースのMySQLモードに接続する方法について説明します。

前提条件

  • Node.js 16.0.0以降がインストール済みであること。
  • npmまたはyarnパッケージマネージャーがインストールされていること。
  • OceanBaseデータベースがデプロイ済みで、MySQLモードのテナントが作成されていること。

手順

  1. Node.jsとnpmのバージョンを確認する
  2. 必要な依存関係をインストールする
  3. OceanBaseデータベース接続情報を取得する
  4. プロジェクトを作成して設定する
  5. サンプルプログラムを実行する

ステップ1:Node.jsとnpmのバージョンを確認する

ターミナルを開き、以下のコマンドを実行してNode.jsとnpmのバージョンを確認します:

node -v
npm -v

ステップ2:必要な依存関係をインストールする

mkdir drizzle-oceanbase-demo
cd drizzle-oceanbase-demo
npm init -y
npm install drizzle-orm mysql2
npm install -D typescript @types/node ts-node
npx tsc --init

ステップ3:データベース接続を設定する

プロジェクトのルートディレクトリに.envファイルを作成し、データベース接続情報を入力します:

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

ステップ3:OceanBaseデータベース接続情報を取得する

OceanBaseデータベースのデプロイ担当者または管理者から、該当するデータベース接続情報を取得します。

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

パラメータ説明:

  • $host:OceanBaseデータベースへの接続IPアドレス
  • $port:OceanBaseデータベースの接続ポート
  • $database_name:アクセス対象のデータベース名
  • $user_name:テナントの接続アカウント
  • $password:アカウントのパスワード

ステップ3:データテーブルモデルを定義する

src/db/schema.ts を作成します:

import { mysqlTable, int, varchar, timestamp, index } from 'drizzle-orm/mysql-core';

export const users = mysqlTable('users', {
  id: int('id').primaryKey().autoincrement(),
  username: varchar('username', { length: 255 }).notNull(),
  email: varchar('email', { length: 255 }).notNull().unique(),
  passwordHash: varchar('password_hash', { length: 255 }).notNull(),
  createdAt: timestamp('created_at').defaultNow().notNull(),
  updatedAt: timestamp('updated_at').defaultNow().onUpdateNow().notNull(),
}, (table) => ({
// emailフィールドのインデックスを追加
  emailIdx: index('email_idx').on(table.email),
}));

OceanBaseデータベースでテーブルを作成します:

CREATE TABLE IF NOT EXISTS users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
);

ステップ4:データベース接続を作成する

src/db/index.ts を作成します:

import { drizzle } from 'drizzle-orm/mysql2';
import mysql from 'mysql2/promise';
import * as schema from './schema';
import * as dotenv from 'dotenv';

// Load environment variables
dotenv.config();

const poolConnection = mysql.createPool({
  host: process.env.DB_HOST,
  port: parseInt(process.env.DB_PORT || '2881'),
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME,
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0,
  timezone: '+08:00',
// Add these options for better compatibility
  multipleStatements: true,
  supportBigNumbers: true,
  bigNumberStrings: true
});

console.log('Connecting to database at:', {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
database: process.env.DB_NAME
});

export const db = drizzle(poolConnection, { 
  schema, 
  mode: 'default' 
});

ステップ5:CRUD操作の例

src/index.ts を作成します:

import { db } from './db';
import { users } from './db/schema';
import { eq } from 'drizzle-orm';

async function main() {
  try {
    // Test the connection first
    await db.select().from(users).limit(1);
    console.log('Successfully connected to the database');

    // Create user
    const insertResult = await db.insert(users).values({
      username: 'testuser',
      email: 'test@example.com',
      passwordHash: 'hashed_password',
    });
    console.log('Insert result:', insertResult);

    // Get the inserted user
    const [newUser] = await db.select().from(users).where(eq(users.email, 'test@example.com'));
    console.log('Created user:', newUser);

    // Query user
    const [user] = await db.select().from(users).where(eq(users.id, newUser.id));
    console.log('Retrieved user:', user);

    // Update user
    const updateResult = await db.update(users)
      .set({ email: 'new.email@example.com' })
      .where(eq(users.id, newUser.id));
    console.log('Update result:', updateResult);
    
    // Get the updated user
    const [updatedUser] = await db.select().from(users).where(eq(users.id, newUser.id));
    console.log('Updated user:', updatedUser);

    // Delete user
    const deleteResult = await db.delete(users)
      .where(eq(users.id, newUser.id));
    console.log('Delete result:', deleteResult);

    // Verify deletion
    const [deletedUser] = await db.select().from(users).where(eq(users.id, newUser.id));
    console.log('User after deletion:', deletedUser || 'User not found');
  } catch (error) {
    console.error('Database error:', error);
  }
}

main().catch(console.error);

実行例

npx ts-node src/index.ts

関連ドキュメント

  • Drizzle ORM公式ドキュメント
  • Drizzle Kitドキュメント
  • OceanBaseドキュメント
  • TypeScriptドキュメント

前のトピック

Prismaを使用してOceanBaseデータベースに接続する
前へ

次のトピック

Dapperを使用してOceanBaseデータベースに接続する
次へ
このページの内容
前提条件
手順
ステップ1:Node.jsとnpmのバージョンを確認する
ステップ2:必要な依存関係をインストールする
ステップ3:データベース接続を設定する
ステップ3:OceanBaseデータベース接続情報を取得する
ステップ3:データテーブルモデルを定義する
ステップ4:データベース接続を作成する
ステップ5:CRUD操作の例
実行例
関連ドキュメント