Exercise 3: Case Sensitivity on SQLite — Possible Solution ============================================================ await prisma.post.createMany({ data: [ { title: "Prisma Tips", slug: "prisma-tips" }, { title: "prisma tricks", slug: "prisma-tricks" }, ], }); const found = await prisma.post.findMany({ where: { title: { contains: "prisma" } }, select: { title: true }, }); console.log(found); Expected result: only "prisma tricks" is returned — the lower-case match. On SQLite, text columns Prisma creates don't support case-insensitive filtering, so "Prisma Tips" is missed. Making the search case-insensitive: On SQLite: Change the column itself. Create a migration with --create-only (Chapter 4) and give the column the NOCASE collation, for example: "title" TEXT NOT NULL COLLATE NOCASE SQLite can't alter an existing column's collation directly, so for an existing table the migration has to rebuild the table (create a new one with the right definition, copy the data, swap them). On PostgreSQL: No schema change needed — add the option to the query: where: { title: { contains: "prisma", mode: "insensitive" } } A simpler, database-independent alternative some projects use: store a lower-cased copy of the title in its own field and search that with a lower-cased term. WHY THIS WORKS AS AN ANSWER ------------------------------ It demonstrates the problem instead of just stating it, and gives the correct fix for each database — a schema change for SQLite, a query option for PostgreSQL.