[後端][API][Next.js][MySQL][ORM] 1.安裝 Prisma 並設定 MySQL

文、意如

目前已有Next.js專案,接下來要安裝Prisma並設定MySQL
安裝 Prisma 和 MySQL 驅動

npm install prisma --save-dev

 

 

 

 

 

npm install @prisma/client

 

 

 

 

 

npm install mysql2

 

 

 

 

 

 

 

初始化 Prisma

npx prisma init

 

這會產生:

 

prisma/

  └── schema.prisma

.env

 

 

修正 schema.prisma 裡的 generator 區塊

請打開 prisma/schema.prisma,把這段:

generator client {
  provider = "prisma-client-js"

  output   = "../generated/prisma"
}

改成這樣(建議使用預設路徑):

generator client {
  provider = "prisma-client-js"
}

這樣 Prisma 會把 @prisma/client 產生在 node_modules/ 下,

而不是自訂的 generated/prisma,這樣不會出錯。

 

重新生成 Prisma Client

npx prisma generate

重新啟動一次

npm run dev
 

設定資料庫連線

打開 .env,修改成你的 MySQL 資料庫連線資訊:

DATABASE_URL="mysql://root:密碼@localhost:3306/你的資料庫名稱"

 

將資料來源 provider 改為 MySQL

修改prisma/schema.prisma

datasource db {
-  provider = "postgresql"
+  provider = "mysql"
  url      = env("DATABASE_URL")
}
第四步:設計 News "最新消息"資料表欄位
model News {
  id          Int      @id @default(autoincrement()) // PK,自動遞增
  title       String                                   // 最新消息標題
  image       String?                                  // 圖片(可為空)
  content     String                                   // 內容
  createdBy   String                                   // 建立者
  createdAt   DateTime @default(now())                 // 建立時間
  updatedBy   String?                                  // 更新者(可為空)
  updatedAt   DateTime?                                // 更新時間(可為空)
}

在 Prisma 裡,

? 表示這個欄位是「可為 null」的(也就是「非必填」)。

image String @default("")  是字串,不會是 null,預設為空字串

第五步:同步資料庫

npx prisma db push

這會根據 model 幫你建立或更新 MySQL 的資料表結構。

 

 

Yiru@Studio - 關於我 - 意如