跳至主要內容

Prisma Studio

Prisma Studio 是一個獨立的視覺化資料庫編輯器,讓您能夠直接在瀏覽器中檢視與操作資料。Prisma 7 推出了全新的獨立版 Studio,從底層重新打造,無論是否有使用 Prisma ORM,皆可在任何環境下運作。

與先前版本不同的是,新的 Prisma Studio 是以 SQL 為驅動,完全不依賴 Prisma 架構檔案(schema file)。相反地,它會直接對您的資料庫進行內省(introspect)以了解架構結構。這意味著您可以在任何支援的資料庫上使用它,而無需建立 Prisma 架構或專案。

請注意,Prisma Studio 並非開源軟體,但您仍然可以在 prisma/studio 儲存庫中建立 Issue。所有關於「舊版 Studio」的 Issue 都將被關閉,因為先前版本將不會再有任何更新。

先決條件

Prisma Studio 是一個獨立工具,僅需資料庫連線即可運作。您有兩種選擇:

選項 1:用於任何資料庫(無需 Prisma 專案)

使用 --url 旗標直接連線至任何支援的資料庫

npx prisma studio --url="postgresql://user:password@localhost:5432/dbname"

此方式無需任何 Prisma ORM 設定,Studio 會直接對您的資料庫架構進行內省。

選項 2:用於 Prisma ORM 專案

如果您已有現成的 Prisma 專案,Studio 可以讀取您的資料庫連線設定:

  • 包含資料庫連線詳細資訊的 prisma.config.ts 設定檔
  • 已設定好的資料庫連線
注意

新版 Studio 不會讀取 prisma/schema.prisma 檔案。它會直接對您的資料庫進行內省以了解架構結構。

快速入門

獨立使用(無需 Prisma ORM)

若要使用任何資料庫啟動 Prisma Studio,請提供連線 URL

npx prisma studio --url="postgresql://user:password@localhost:5432/dbname"

搭配 Prisma ORM 專案使用

如果您有 Prisma 專案,請在專案目錄中執行以下指令

npx prisma studio --config ./prisma.config.ts

這兩個指令都會啟動本機網頁伺服器(預設連接埠為 5555),並在瀏覽器中開啟 Prisma Studio。Studio 會直接連線至您的資料庫,並即時內省架構,為您的資料提供視覺化介面——完全不需要 Prisma 架構檔案。

核心功能

Prisma Studio 為管理資料庫提供了多項關鍵功能

瀏覽資料

Studio 會在側邊欄顯示資料庫中的所有資料表。選取任何資料表即可以表格格式檢視資料。您可以開啟多個資料表到不同的分頁中,以便同時處理關聯資料。

檢視與編輯記錄

您可以透過兩種方式編輯資料:

  • 行內編輯(Inline editing):雙擊任何儲存格,直接在表格中編輯其值。
  • 側邊面板編輯(Side panel editing):點擊記錄旁的編輯圖示,開啟包含所有欄位的詳細檢視視窗。

變更會被暫存,必須使用儲存按鈕明確進行儲存。這讓您可以在將變更寫入資料庫之前進行多項編輯。

新增記錄

點擊「新增記錄(Add record)」按鈕即可建立新記錄。Studio 會根據每個欄位的資料型態提供合適的輸入控制項:

  • 字串類型的文字欄位
  • 整數與小數的數字輸入框
  • 日期時間欄位的日期選擇器
  • 列舉(enum)與布林值的下拉式選單
  • 外鍵的關聯選取器

刪除記錄

使用核取方塊選取一或多筆記錄,然後點擊刪除按鈕。刪除作業需要確認,且會立即執行(無法與其他變更進行批次處理)。

使用「篩選(Filters)」選單來縮小資料範圍

  • 使用比較運算子(等於、大於、小於等)新增條件
  • 透過 AND 邏輯組合多個篩選條件
  • 清除個別篩選條件或一次清除所有篩選條件

控制可見性

自訂您的檢視畫面

  • 欄位選單(Fields menu):顯示或隱藏特定欄位
  • 顯示選單(Showing menu):透過「Take」(限制數量)與「Skip」(偏移量)選項控制分頁

排序資料

點擊任何欄位標題即可按該欄位排序。再次點擊可在遞增與遞減排序之間切換。

鍵盤快速鍵

Studio 支援常用操作的鍵盤快速鍵。按下 Cmd+/ (macOS) 或 Ctrl+/ (Windows) 即可檢視所有可用的快速鍵。

了解資料型態

Studio 會針對資料庫中不同的欄位類型顯示視覺化標示

  • 文字欄位:字串值
  • 數字欄位:整數與小數
  • 日期/時間欄位:時間戳記與日期
  • 布林值欄位:True/False 值
  • 列舉(Enum)欄位:預先定義的選項清單
  • 關聯欄位:對其他資料表記錄的參考(外鍵)
  • JSON 欄位:結構化的 JSON 資料

這些視覺化提示有助於您在 Studio 直接從資料庫內省架構時,快速了解您的資料結構。

Prisma Studio 支援的資料庫

Prisma Studio 目前支援下列資料庫:PostgreSQL、MySQL 與 SQLite。

Prisma Studio 對 SQLite 的要求

  • 目前 SQLite 的資料庫網址中的檔案路徑必須包含 file: 協定
  • Node.js 22.5+:透過內建的 node:sqlite 模組即可直接使用
    • 可能需要設定 NODE_OPTIONS=--experimental-sqlite 環境變數
  • Node.js 20:需要安裝 better-sqlite3 作為依賴項
  • Deno >= 2.2:透過 內建 SQLite 模組 支援
  • Bun:Prisma Studio 對 SQLite 的支援即將推出,目前尚無法使用
使用 npx 搭配 better-sqlite3

如果您在執行階段無法使用 node:sqlite,或者不想將 better-sqlite3 安裝為強制依賴項(它會增加約 10MB 大小),您可以使用 npx 來暫時安裝所需的套件:

npx -p better-sqlite3 -p prisma prisma studio --url file:./my_file.db

此命令會

  • 暫時安裝 better-sqlite3 而不將其加入專案依賴項
  • 使用指定的 SQLite 資料庫檔案執行 Prisma Studio
  • 避免專案中增加 10MB 的 better-sqlite3 開銷

尚未支援的資料庫

CockroachDB 與 MongoDB 的支援目前尚未提供,但未來版本可能會加入。如果您正在使用這些資料庫:

疑難排解

PostgreSQL:「unrecognized configuration parameter 'schema'」錯誤

在連線至 PostgreSQL 資料庫時,如果您的連線字串包含 schema 查詢參數,可能會遇到此錯誤。

unrecognized configuration parameter "schema"

這是因為新版 Studio 是獨立運作的,它會將連線 URL 直接傳遞給 PostgreSQL 驅動程式,而不進行任何處理。您提供的 URL(無論是透過 prisma.config.ts 還是 --url 旗標)必須是一個有效的 PostgreSQL 連線字串,且僅使用 標準 PostgreSQL 連線參數

schema 參數是 Prisma ORM 的自訂參數,在 v6 及更早版本中有效,但 PostgreSQL 本身無法識別它。

要解決此問題,請改用標準的 search_path 參數。

# ❌ This will cause an error
postgresql://user:password@host:port/database?schema=my_schema

# ✅ Use this instead
postgresql://user:password@host:port/database?options=-c%20search_path%3Dmy_schema

或者,如果您使用的是預設的 public 架構,則可以完全移除該 schema 參數,因為 PostgreSQL 會自動預設使用它。

如需更多詳細資訊,請參閱相關的 GitHub issue

終端機:Failed to run script / Error in Prisma Client request

快取問題可能會導致 Prisma Studio 使用舊版的查詢引擎(query engine)。您可能會看到以下錯誤:

Error in request:  PrismaClientKnownRequestError: Failed to validate the query Error occurred during query validation & transformation

要解決此問題,請刪除以下資料夾:

  • macOS 與 Linux 上的 ~/.cache/prisma
  • Windows 上的 %AppData%/Prisma/Studio
© . This site is unofficial and not affiliated with Prisma Data, Inc.