1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社愛宕Advent Calendar 2023

Day 20

PrismaでSQLの作成や管理、反映の手間を削減する

Last updated at Posted at 2023-12-19

Prismaのインストールと初期設定

  • 下記コマンドを実行
npm init -y
npm install prisma
npx prisma init
.env
DATABASE_URL="mysql://root:mysql@localhost:33306/test_db"

テーブルの作成と反映

  • 「schema.prisma」ファイルにテーブル情報を作成します
schema.prisma
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String
  nickname  String?
}
  • 下記コマンドを実行するとテーブルが作成されます
npx prisma migrate dev
  • 作成されたテーブルの内容
    1.jpg

テーブルの変更と反映

  • 文字列長の変更と項目を追加します
schema.prisma
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String @db.VarChar(60)
  nickname  String? @db.VarChar(60)
  remarks1 String? @db.VarChar(250)
  remarks2 String? @db.VarChar(250)
}
  • 下記コマンドを実行するとテーブルが変更されます
npx prisma migrate dev
  • 変更されたテーブルの内容
    3.jpg

コマンド実行時にmigration.sqlファイルに差分が保存されます

  • migration.sqlファイルの中身はcreate文やalter文になります
migrations
   │  migration_lock.toml
   ├─20231211003530_init
   │      migration.sql
   └─20231211015124_
          migration.sql
20231211003530_init/migration.sql
-- CreateTable
CREATE TABLE `User` (
    `id` INTEGER NOT NULL AUTO_INCREMENT,
    `email` VARCHAR(191) NOT NULL,
    `name` VARCHAR(191) NOT NULL,
    `nickname` VARCHAR(191) NULL,

    UNIQUE INDEX `User_email_key`(`email`),
    PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
220231211015124_/migration.sql
-- AlterTable
ALTER TABLE `User` ADD COLUMN `remarks1` VARCHAR(250) NULL,
    ADD COLUMN `remarks2` VARCHAR(250) NULL,
    MODIFY `name` VARCHAR(60) NOT NULL,
    MODIFY `nickname` VARCHAR(60) NULL;

DBの接続先を変更したい場合

  • dotenvを使用する必要があるため、下記コマンドでインストールする
npm install dotenv --save
  • 接続先の設定ファイル名が「.evn.test」の場合の例
dotenv -e .evn.test -- yarn prisma migrate dev
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?