From 6fb3b95ade8f64b8c2f4887d05604aa7bc49c53a Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Wed, 15 May 2024 12:21:38 -0500 Subject: [PATCH] Add Check If Database And Schema Are Not In Sync as a Prisma TIL --- README.md | 3 +- ...-if-database-and-schema-are-not-in-sync.md | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 prisma/check-if-database-and-schema-are-not-in-sync.md diff --git a/README.md b/README.md index 504acab..e05ab4a 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pairing with smart people at Hashrocket. For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). -_1429 TILs and counting..._ +_1430 TILs and counting..._ --- @@ -824,6 +824,7 @@ _1429 TILs and counting..._ - [Apply Separate Formatting With A Blank Line](prisma/apply-separate-formatting-with-a-blank-line.md) - [Batch Insert Records With createMany](prisma/batch-insert-records-with-create-many.md) +- [Check If Database And Schema Are Not In Sync](prisma/check-if-database-and-schema-are-not-in-sync.md) - [Configure Client To Log SQL Queries](prisma/configure-client-to-log-sql-queries.md) - [Execute A Raw SQL Query](prisma/execute-a-raw-sql-query.md) - [Grab A Limited Set Of Records](prisma/grab-a-limited-set-of-records.md) diff --git a/prisma/check-if-database-and-schema-are-not-in-sync.md b/prisma/check-if-database-and-schema-are-not-in-sync.md new file mode 100644 index 0000000..dec906b --- /dev/null +++ b/prisma/check-if-database-and-schema-are-not-in-sync.md @@ -0,0 +1,37 @@ +# Check If Database And Schema Are Not In Sync + +The [`prisma migrate +diff`](https://www.prisma.io/docs/orm/reference/prisma-cli-reference#migrate-diff) +command is a versatile tool that can be used to check if there is a difference +between two sources. In this case, we want to check if our database is in sync +with the `schema.prisma` file for our project. + +If we have made changes to the schema file, but haven't yet migrated or pushed +those changes to our local database, then we want to be notified of that +mismatch. + +We'll point at the schema file with `--to-schema-datamodel` and at our local +database with `--from-url`. + +```bash +❯ npx prisma migrate diff \ + --to-schema-datamodel ./prisma/schema.prisma \ + --from-url mysql://root@localhost:3309/kcd-products + +[*] Changed the `User` table + [+] Added column `metadata` +``` + +In the case where there is a different, we see an output summary of the diff. + +Let's say we've applied our changes (`prisma db push`) to our local database. +If we now run that same command again, we can see that no difference is +detected and our database is in sync with our schema. + +```bash +❯ npx prisma migrate diff \ + --to-schema-datamodel ./prisma/schema.prisma \ + --from-url mysql://root@localhost:3309/kcd-products + +No difference detected. +```