Hướng dẫn này mô tả cách giải quyết các sự cố với Prisma Migrate trong môi trường phát triển, thường liên quan đến việc đặt lại cơ sở dữ liệu của bạn. Để khắc phục sự cố tập trung vào sản xuất, hãy xem
- Khắc phục sự cố sản xuất
- Cơ sở dữ liệu sản xuất bản vá/sửa lỗi nóng
Hướng dẫn này không áp dụng cho MongoDB.
Thay vì
$npx prisma migrate dev
9,$npx prisma migrate dev
0 được sử dụng cho MongoDB.Xử lý xung đột lịch sử di chuyển
Xung đột lịch sử di chuyển xảy ra khi có sự khác biệt giữa thư mục di chuyển trong hệ thống tệp và bảng
$npx prisma migrate dev
0 trong cơ sở dữ liệuNguyên nhân của xung đột lịch sử di cư trong môi trường phát triển
- Di chuyển đã được áp dụng sau đó được sửa đổi
- Di chuyển đã được áp dụng bị thiếu trong hệ thống tệp
Trong môi trường phát triển, việc chuyển đổi giữa các nhánh tính năng có thể dẫn đến xung đột lịch sử vì bảng
$npx prisma migrate dev
0 chứa các lần di chuyển từ$npx prisma migrate dev
2 và việc chuyển sang$npx prisma migrate dev
3 có thể khiến một số lần di chuyển đó biến mấtGhi chú. Bạn không bao giờ nên cố ý xóa hoặc chỉnh sửa quá trình di chuyển, vì điều này có thể dẫn đến sự khác biệt giữa quá trình phát triển và sản xuất
Khắc phục xung đột lịch sử di chuyển trong môi trường phát triển
Nếu Prisma Migrate phát hiện xung đột lịch sử di chuyển khi bạn chạy
$npx prisma migrate dev
4, CLI sẽ yêu cầu đặt lại cơ sở dữ liệu và áp dụng lại lịch sử di chuyểnLược đồ trôi
Sự trôi dạt lược đồ cơ sở dữ liệu xảy ra khi lược đồ cơ sở dữ liệu của bạn không đồng bộ với lịch sử di chuyển của bạn - lược đồ cơ sở dữ liệu đã 'trôi dạt' khỏi nguồn gốc của sự thật
Nguyên nhân khiến lược đồ trôi dạt trong môi trường phát triển
Schema drift có thể xảy ra nếu
- Lược đồ cơ sở dữ liệu đã được thay đổi mà không sử dụng di chuyển - ví dụ: bằng cách sử dụng
$npx prisma migrate dev
5 hoặc thay đổi lược đồ cơ sở dữ liệu theo cách thủ công
Ghi chú. Cơ sở dữ liệu bóng được yêu cầu để phát hiện sự trôi dạt của lược đồ và do đó chỉ có thể được thực hiện trong môi trường phát triển
Sửa lỗi trôi dạt lược đồ trong môi trường phát triển
Nếu bạn đã thực hiện các thay đổi thủ công đối với cơ sở dữ liệu mà bạn không muốn giữ lại hoặc có thể dễ dàng sao chép trong lược đồ Prisma
Đặt lại cơ sở dữ liệu của bạn
$npx prisma migrate reset
Sao chép các thay đổi trong lược đồ Prisma và tạo một lần di chuyển mới
$npx prisma migrate dev
Nếu bạn đã thực hiện các thay đổi thủ công đối với cơ sở dữ liệu mà bạn muốn giữ lại, bạn có thể
Nội quan cơ sở dữ liệu
________số 8Prisma sẽ cập nhật lược đồ của bạn với những thay đổi được thực hiện trực tiếp trong cơ sở dữ liệu
Tạo một lần di chuyển mới để bao gồm các thay đổi nội quan trong lịch sử di chuyển của bạn
$npx prisma migrate dev --name introspected_change
Prisma Migrate sẽ nhắc bạn đặt lại, sau đó áp dụng tất cả các lần di chuyển hiện có và một lần di chuyển mới dựa trên các thay đổi được xem xét nội tâm. Cơ sở dữ liệu và lịch sử di chuyển của bạn hiện được đồng bộ hóa, bao gồm các thay đổi thủ công của bạn
Di chuyển không thành công
Nguyên nhân của việc di chuyển không thành công trong môi trường phát triển
Di chuyển có thể thất bại nếu
- Bạn sửa đổi di chuyển trước khi chạy nó và gây ra lỗi cú pháp
- Bạn thêm cột (
$npx prisma migrate dev
6) bắt buộc vào bảng đã có dữ liệu - Quá trình di chuyển dừng đột ngột
- Cơ sở dữ liệu ngừng hoạt động ở giữa quá trình di chuyển
Mỗi lần di chuyển trong bảng
$npx prisma migrate dev
0 có một cột$npx prisma migrate dev
8 lưu trữ lỗiSửa lỗi di chuyển không thành công trong môi trường phát triển
Cách dễ nhất để xử lý việc di chuyển không thành công trong môi trường nhà phát triển là giải quyết nguyên nhân gốc rễ và đặt lại cơ sở dữ liệu. Ví dụ
Nếu bạn đã gây ra lỗi cú pháp SQL bằng cách chỉnh sửa cơ sở dữ liệu theo cách thủ công, hãy cập nhật tệp
$npx prisma migrate dev
9 bị lỗi và đặt lại cơ sở dữ liệu$npx prisma migrate dev
4Nếu bạn đã đưa ra một thay đổi trong lược đồ Prisma mà không thể áp dụng cho cơ sở dữ liệu có dữ liệu (ví dụ: một cột bắt buộc trong bảng có dữ liệu)
Xóa tệp
$npx prisma migrate dev
9Sửa đổi lược đồ - ví dụ: thêm giá trị mặc định vào trường bắt buộc
Di chuyển
$npx prisma migrate dev
6Prisma Migrate sẽ nhắc bạn đặt lại cơ sở dữ liệu và áp dụng lại tất cả các lần di chuyển
Nếu có điều gì đó làm gián đoạn quá trình di chuyển, hãy đặt lại cơ sở dữ liệu
$npx prisma migrate dev
4
Prisma Migrate và PgBouncer
Bạn có thể gặp lỗi sau nếu cố chạy các lệnh Prisma Migrate trong môi trường sử dụng PgBouncer để tổng hợp kết nối
$npx prisma migrate dev
8Xem giải pháp thay thế Prisma Migrate và PgBouncer để biết thêm thông tin và giải pháp thay thế. Theo dõi vấn đề GitHub #6485 để cập nhật