Update your Prisma client to Lucia v2

Install the latest version of the Prisma adapter.

npm i @lucia-auth/adapter-prisma@latest
pnpm add @lucia-auth/adapter-prisma@latest
yarn add @lucia-auth/adapter-prisma@latest

Remove single use keys#

SQL#

Same for SQLite, PostgreSQL, and MySQL.

DELETE FROM auth_key
WHERE expires != null;

MongoDB#

// db.<collection_name>
db.authKey.deleteMany({
	expires: { $ne: null }
});

Update AuthKey model#

Remove Key(primary_key) and Key(expires) from the schema.

model AuthKey {
  id              String   @id @unique
  hashed_password String?
  user_id         String
  auth_user       AuthUser @relation(references: [id], fields: [user_id], onDelete: Cascade)

  @@index([user_id])
  @@map("auth_key")
}

Initialize adapter#

prisma() is now a named export instead of a default export.

import { lucia } from "lucia";
import { prisma } from "@lucia-auth/adapter-prisma";
import { PrismaClient } from "@prisma/client";

const client = new PrismaClient();

// default values
const auth = lucia({
	adapter: prisma(client, {
		user: "authUser",
		key: "authKey",
		session: "authSession"
	})
	// ...
});

You can now rename the models as well. Without the second options params, the adapter expects the default schema, which is different from the one required in v1.