From d1e2b3641c8f382baa92d1a694c57539af754b84 Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 24 Oct 2023 18:46:08 +0200 Subject: [PATCH 01/43] add section on embedded databases --- content/300-guides/050-database/900-turso.mdx | 150 ++++++++++++++++++ .../embedded-replica-create-replica.png | Bin 0 -> 82793 bytes .../images/embedded-replica-read.png | Bin 0 -> 79608 bytes .../images/embedded-replica-remote-read.png | Bin 0 -> 66251 bytes .../embedded-replica-write-propagation.png | Bin 0 -> 89371 bytes 5 files changed, 150 insertions(+) create mode 100644 content/300-guides/050-database/900-turso.mdx create mode 100644 content/300-guides/050-database/images/embedded-replica-create-replica.png create mode 100644 content/300-guides/050-database/images/embedded-replica-read.png create mode 100644 content/300-guides/050-database/images/embedded-replica-remote-read.png create mode 100644 content/300-guides/050-database/images/embedded-replica-write-propagation.png diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx new file mode 100644 index 0000000000..30268e82ee --- /dev/null +++ b/content/300-guides/050-database/900-turso.mdx @@ -0,0 +1,150 @@ +--- +title: 'Using Prisma with Turso' +metaTitle: 'Using Prisma with Turso' +metaDescription: 'Guide to using Prisma with Turso' +tocDepth: 3 +--- + + + +This guide discusses the concepts behind using Prisma and Turso, explains the commonalities and differences between Turso and other database providers, and leads you through the process for configuring your application to integrate with Turso + + + +## What is Turso? + +[Turso](https://turso.tech/) is an edge-hosted, distributed database that's based on [libSQL](https://turso.tech/libsql), an open-source and open-contribution fork of [SQLite](https://sqlite.org/), enabling you to bring data closer to your application and minimize query latency. + +## Commonalities with other database providers + +Many aspects of using Prisma with Turso are just like using Prisma with any other relational database. You can still: + +- model your database with the [Prisma Schema Language](/concepts/components/prisma-schema) +- use Prisma's existing [`sqlite` database connector](/concepts/database-connectors/sqlite) in your schema +- use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Neon + +## Specific considerations + +### Managing schema changes + +```sh +npx prisma migrate diff +``` + +```sh +turso db shell project_name < path/to/migration-file.sql +``` + +### Connect and query a remote Turso database + +1. Create an authentication token that will allow you to connect to the database: + +```sh +turso db tokens create turso-prisma +``` + +1. Retrieve your database's connection string: + +```sh +turso db show turso-prisma +``` + +1. Update your `.env` file with the authentication token and connection string: + +```text +TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." +TURSO_DATABASE_URL="libsql://turso-prisma-user.turso.io" +``` + +1. Enable the `driverAdapters` Preview feature flag: + +```prisma +generator client { + provider = "prisma-client-js" + previewFeatures = ["driverAdapters"] +} + +datasource db { + provider = "sqlite" + url = "file:./dev.db" +} +``` + +1. Generate Prisma Client: + +```sh +npx prisma generate +``` + +Install the libSQL database client and Prisma adapter for libSQL: + +```sh +npm install @libsql/client @prisma/adapter-libsql +``` + +Update your Prisma Client instance with the following snippet: + +```ts +import { PrismaClient } from '@prisma/client' +import { PrismaLibSQL } from '@prisma/adapter-libsql' +import { createClient } from '@libsql/client' + +const libsql = createClient({ + url: `${process.env.TURSO_DATABASE_URL}`, + authToken: `${process.env.TURSO_AUTH_TOKEN}`, +}) + +const adapter = new PrismaLibSQL(libsql) +const prisma = new PrismaClient({ adapter }) +``` + +You can use Prisma Client as you normally would with full type-safety as you normally would in your project. + +### Connect and query an embedded database replica + +Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. This is similar to having an embedded or SQLite database. + +When your app initially establishes a connection to your database, the primary database will fulfill the query: + +![Embedded Replica: First remote read](./images/embedded-replica-remote-read.png) + +Turso will (1) create an embedded replica inside your application and (2) copy data from your primary database to the replica so it is locally available: + +![Embedded Replica: Remote DB Copy](./images/embedded-replica-create-replica.png) + +The embedded replica will fulfill subsequent read queries. The libSQL client provides a [`sync()`]() method which you can invoke to ensure the embedded replica's data remains fresh. + +![Embedded Replica: Local DB reads](./images/embedded-replica-read.png) + +With embedded replicas, this setup guarantees your app is fast because the data will be readily available locally. + +Like a read replica setup you may be familiar with, write operations are forwarded to the primary remote database and executed before being propagated to all embedded replicas. + +![Embedded Replica: Write operation propagation](./images/embedded-replica-write-propagation.png) + +1. Write operations propagation are forwarded to the database. +1. Database responds to the server with the updates from 1. +1. Write operations are propagated to the database replica. + +To get started using embedded replicas with Prisma, update your Prisma Client instance with the following changes: + +```ts highlight=6,7,11,15;add +import { PrismaClient } from '@prisma/client' +import { PrismaLibSQL } from '@prisma/adapter-libsql' +import { createClient } from '@libsql/client' + +const libsql = createClient({ + url: 'file:replica.db', + syncUrl: `${process.env.TURSO_DATABASE_URL}`, + authToken: `${process.env.TURSO_AUTH_TOKEN}`, +}) + +const sync = async () => await libsql.sync() + +const adapter = new PrismaLibSQL(libsql) + +const prismaClientSingleton = () => { + sync() + return new PrismaClient({ adapter }) +} +``` diff --git a/content/300-guides/050-database/images/embedded-replica-create-replica.png b/content/300-guides/050-database/images/embedded-replica-create-replica.png new file mode 100644 index 0000000000000000000000000000000000000000..830501d9c235f9cdb34c79097154533708e499ea GIT binary patch literal 82793 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�w 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�-bt*ERVXN5PAm>V8~am55BvJ@imLDmp> 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 Mp(tJ}Y8>)E0G}3;^8f$< literal 0 HcmV?d00001 diff --git a/content/300-guides/050-database/images/embedded-replica-remote-read.png b/content/300-guides/050-database/images/embedded-replica-remote-read.png new file mode 100644 index 0000000000000000000000000000000000000000..7762e8bfaa936d5284c8b19f4bb56fe289298e57 GIT binary patch literal 66251 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%0AZ{@h?MV%}BkT-4w5K@4hFJcPFzx)EU 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 literal 0 HcmV?d00001 diff --git a/content/300-guides/050-database/images/embedded-replica-write-propagation.png b/content/300-guides/050-database/images/embedded-replica-write-propagation.png new file mode 100644 index 0000000000000000000000000000000000000000..fa36c873351b01bdc1582ba28cfbefe38e7a060b GIT binary patch literal 89371 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

-2. Retrieve the database's connection string: + + Expand to learn how to provision a database and retrieve your credentials on + Turso + - ```sh - turso db show turso-prisma-db - ``` +Ensure that you have the [Turso CLI](https://docs.turso.tech/reference/turso-cli) installed to manage your databases. + +To provision a database on Turso, run the following command: + +```sh +turso db create turso-prisma-db +``` + +Retrieve the database's connection string: + +```sh +turso db show turso-prisma-db +``` 3. Create an authentication token that will allow you to connect to the database: - ```sh - turso db tokens create turso-prisma-db - ``` +```sh +turso db tokens create turso-prisma-db +``` 4. Update your `.env` file with the authentication token and connection string: - ```text - TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." - TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" - ``` +```text file=.env +TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." +TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" +``` -5. Enable the `driverAdapters` Preview feature flag: - - ```prisma highlight=3;add - generator client { - provider = "prisma-client-js" - previewFeatures = ["driverAdapters"] - } - - datasource db { - provider = "sqlite" - url = "file:./dev.db" - } - ``` +
-6. Generate Prisma Client: +To get started, enable the `driverAdapters` Preview feature flag: - ```sh - npx prisma generate - ``` +```prisma highlight=3;add +generator client { + provider = "prisma-client-js" + previewFeatures = ["driverAdapters"] +} -7. Install the libSQL database client and Prisma driver adapter for libSQL packages: +datasource db { + provider = "sqlite" + url = "file:./dev.db" +} +``` - ```sh - npm install @libsql/client @prisma/adapter-libsql - ``` +Generate Prisma Client: -8. Update your Prisma Client instance with the following snippet: +```sh +npx prisma generate +``` - ```ts - import { PrismaClient } from '@prisma/client' - import { PrismaLibSQL } from '@prisma/adapter-libsql' - import { createClient } from '@libsql/client' +Install the libSQL database client and Prisma driver adapter for libSQL packages: - const libsql = createClient({ - url: `${process.env.TURSO_DATABASE_URL}`, - authToken: `${process.env.TURSO_AUTH_TOKEN}`, - }) +```sh +npm install @libsql/client @prisma/adapter-libsql +``` - const adapter = new PrismaLibSQL(libsql) - const prisma = new PrismaClient({ adapter }) - ``` +Update your Prisma Client instance: + +```ts +import { PrismaClient } from '@prisma/client' +import { PrismaLibSQL } from '@prisma/adapter-libsql' +import { createClient } from '@libsql/client' + +const libsql = createClient({ + url: `${process.env.TURSO_DATABASE_URL}`, + authToken: `${process.env.TURSO_AUTH_TOKEN}`, +}) + +const adapter = new PrismaLibSQL(libsql) +const prisma = new PrismaClient({ adapter }) +``` You can use Prisma Client as you normally would with full type-safety in your project. @@ -137,7 +156,7 @@ To update your database schema: turso db shell turso-prisma-db < ./prisma/migrations/20230922132717_init/migration.sql # Replace `20230922132717_init` with the existing migration ``` -This workflow does not support tracking the history of applied migrations. +For subsequent migrations, repeat the above steps to apply changes to your database. This workflow does not support tracking the history of applied migrations. ## How to connect and query from an embedded replica From 4e9b645eb59d4ab5b308d24ad01f41837feca7ea Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 15:43:39 +0100 Subject: [PATCH 32/43] add app middleware example --- content/300-guides/050-database/900-turso.mdx | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 27c279615b..6190516025 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -184,25 +184,21 @@ Like a read replica setup you may be familiar with, write operations are forward 1. Database responds to the server with the updates from 1. 1. Write operations are propagated to the database replica. -To get started using embedded replicas with Prisma, update your Prisma Client instance with the following changes: +To get started using embedded replicas with Prisma, add the `sync()` call in your application. For example, you can add the `sync()` method in your middleware to synchronize the data between your remote database and embedded replica. -```ts highlight=6,7,11,16;add -import { PrismaClient } from '@prisma/client' -import { PrismaLibSQL } from '@prisma/adapter-libsql' -import { createClient } from '@libsql/client' +For example, you can make the following change in your application if you're working with Express: -const libsql = createClient({ - url: 'file:replica.db', - syncUrl: `${process.env.TURSO_DATABASE_URL}`, - authToken: `${process.env.TURSO_AUTH_TOKEN}`, -}) +```ts highlight=5-8,10;add; +import express from 'express' +const app = express() -const sync = async () => await libsql.sync() +// Your application code +async function sync(req, res, next) { + await libsql.sync() + next() +} -const adapter = new PrismaLibSQL(libsql) +app.use(sync) -const prismaClientSingleton = () => { - await sync() - return new PrismaClient({ adapter }) -} +app.listen(3000, () => console.log(`Server ready at http://localhost:3000`)) ``` From e97297f6dce467f51352114f1400735610b7f849 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 15:45:07 +0100 Subject: [PATCH 33/43] edit middleware example --- content/300-guides/050-database/900-turso.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 6190516025..f84861b504 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -192,7 +192,7 @@ For example, you can make the following change in your application if you're wor import express from 'express' const app = express() -// Your application code +// ... the rest of your application code async function sync(req, res, next) { await libsql.sync() next() From 57f40c2774732a79324e3a5d97df9a661beeae42 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 15:54:15 +0100 Subject: [PATCH 34/43] update middleware example --- content/300-guides/050-database/900-turso.mdx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index f84861b504..52c6f0e49d 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -188,17 +188,15 @@ To get started using embedded replicas with Prisma, add the `sync()` call in you For example, you can make the following change in your application if you're working with Express: -```ts highlight=5-8,10;add; +```ts highlight=5-8;add; import express from 'express' const app = express() // ... the rest of your application code -async function sync(req, res, next) { +app.use(async (req, res, next) => { await libsql.sync() next() -} - -app.use(sync) +}) app.listen(3000, () => console.log(`Server ready at http://localhost:3000`)) ``` From 20f319838a71094b453b6100eb85159730350cdb Mon Sep 17 00:00:00 2001 From: ruheni Date: Thu, 2 Nov 2023 11:38:57 +0100 Subject: [PATCH 35/43] update embedded replica content --- content/300-guides/050-database/900-turso.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 52c6f0e49d..671841125b 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -184,9 +184,9 @@ Like a read replica setup you may be familiar with, write operations are forward 1. Database responds to the server with the updates from 1. 1. Write operations are propagated to the database replica. -To get started using embedded replicas with Prisma, add the `sync()` call in your application. For example, you can add the `sync()` method in your middleware to synchronize the data between your remote database and embedded replica. +How often to synchronize you need to synchronize data between your remote database and embedded replica is dependent on your application's data consistency needs. For example, you can use either middleware functions (e.g. Express and Fastify) or a cron job to synchronize the data. -For example, you can make the following change in your application if you're working with Express: +To get started using embedded replicas with Prisma, add the `sync()` method from libSQL in your application. The example below shows how you can synchronize data using Express middleware. ```ts highlight=5-8;add; import express from 'express' From 0d4748e4e235f219741ae5a5d47bd6d36b6a34d8 Mon Sep 17 00:00:00 2001 From: Alex Ruheni <33921841+ruheni@users.noreply.github.com> Date: Thu, 2 Nov 2023 14:53:53 +0000 Subject: [PATCH 36/43] Apply suggestions from code review --- content/300-guides/050-database/900-turso.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 671841125b..a5b4a6c805 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -69,19 +69,19 @@ Ensure that you have the [Turso CLI](https://docs.turso.tech/reference/turso-cli To provision a database on Turso, run the following command: -```sh +```terminal turso db create turso-prisma-db ``` Retrieve the database's connection string: -```sh +```terminal turso db show turso-prisma-db ``` 3. Create an authentication token that will allow you to connect to the database: -```sh +```terminal turso db tokens create turso-prisma-db ``` @@ -110,13 +110,13 @@ datasource db { Generate Prisma Client: -```sh +```terminal npx prisma generate ``` Install the libSQL database client and Prisma driver adapter for libSQL packages: -```sh +```terminal npm install @libsql/client @prisma/adapter-libsql ``` @@ -146,13 +146,13 @@ To update your database schema: 1. Generate a migration file using `prisma migrate dev` against a local SQLite database: - ```sh + ```terminal npx prisma migrate dev --name init # Migration name ``` 2. Apply the migration using Turso's CLI: - ```sh + ```terminal turso db shell turso-prisma-db < ./prisma/migrations/20230922132717_init/migration.sql # Replace `20230922132717_init` with the existing migration ``` From b3864418d2a166bb370c342e45fbfefa5512fba9 Mon Sep 17 00:00:00 2001 From: Alex Ruheni <33921841+ruheni@users.noreply.github.com> Date: Thu, 2 Nov 2023 15:36:21 +0000 Subject: [PATCH 37/43] Apply suggestions from code review --- content/300-guides/050-database/900-turso.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index a5b4a6c805..e3c96f9a90 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -67,13 +67,13 @@ There are a number of differences between Turso and SQLite to consider. You shou Ensure that you have the [Turso CLI](https://docs.turso.tech/reference/turso-cli) installed to manage your databases. -To provision a database on Turso, run the following command: +1. To provision a database on Turso, run the following command: ```terminal turso db create turso-prisma-db ``` -Retrieve the database's connection string: +2. Retrieve the database's connection string: ```terminal turso db show turso-prisma-db From 5f5706aea791b106b0777651caa61748f1adbacf Mon Sep 17 00:00:00 2001 From: ruheni Date: Fri, 3 Nov 2023 16:24:43 +0100 Subject: [PATCH 38/43] update image style --- content/300-guides/050-database/900-turso.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index e3c96f9a90..8fa4e01730 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -17,7 +17,7 @@ Prisma support for Turso is currently in [Early Access](/about/prisma/releases#e Turso's logo From f6f7f280d45cd7796dd86e16744700486ea81694 Mon Sep 17 00:00:00 2001 From: ruheni Date: Fri, 3 Nov 2023 16:26:54 +0100 Subject: [PATCH 39/43] indent code blocks --- content/300-guides/050-database/900-turso.mdx | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 8fa4e01730..0e28cfdba8 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -69,28 +69,28 @@ Ensure that you have the [Turso CLI](https://docs.turso.tech/reference/turso-cli 1. To provision a database on Turso, run the following command: -```terminal -turso db create turso-prisma-db -``` + ```terminal + turso db create turso-prisma-db + ``` 2. Retrieve the database's connection string: -```terminal -turso db show turso-prisma-db -``` + ```terminal + turso db show turso-prisma-db + ``` 3. Create an authentication token that will allow you to connect to the database: -```terminal -turso db tokens create turso-prisma-db -``` + ```terminal + turso db tokens create turso-prisma-db + ``` 4. Update your `.env` file with the authentication token and connection string: -```text file=.env -TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." -TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" -``` + ```text file=.env + TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." + TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" + ``` From 10cf9a6234627fae188a43e3b2c057d8ff61a6f7 Mon Sep 17 00:00:00 2001 From: ruheni Date: Fri, 3 Nov 2023 16:45:25 +0100 Subject: [PATCH 40/43] update how to connect to connect and query a Turso db section --- content/300-guides/050-database/900-turso.mdx | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 0e28cfdba8..558684423d 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -54,45 +54,46 @@ There are a number of differences between Turso and SQLite to consider. You shou - **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the remote SQLite database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. - **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). -## Connect and query your primary database +## How to connect and query a Turso database -
+The subsequent section covers how you can create a Turso database, retrieve your database credentials and connect to your database. -
+### How to provision a database and retrieve database credentials - - Expand to learn how to provision a database and retrieve your credentials on - Turso - + Ensure that you have the [Turso CLI](https://docs.turso.tech/reference/turso-cli) installed to manage your databases. -1. To provision a database on Turso, run the following command: + - ```terminal - turso db create turso-prisma-db - ``` +If you don't have an existing database, you can provision a database by running the following command: -2. Retrieve the database's connection string: +```terminal +turso db create turso-prisma-db +``` - ```terminal - turso db show turso-prisma-db - ``` +The above command will create a database in the closest region to your location. -3. Create an authentication token that will allow you to connect to the database: +Run the following command to retrieve your database's connection string: - ```terminal - turso db tokens create turso-prisma-db - ``` +```terminal +turso db show turso-prisma-db +``` -4. Update your `.env` file with the authentication token and connection string: +Next, create an authentication token that will allow you to connect to the database: - ```text file=.env - TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." - TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" - ``` +```terminal +turso db tokens create turso-prisma-db +``` + +Update your `.env` file with the authentication token and connection string: + +```text file=.env +TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." +TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" +``` -
+### How to connect to a Turso database To get started, enable the `driverAdapters` Preview feature flag: @@ -158,7 +159,7 @@ To update your database schema: For subsequent migrations, repeat the above steps to apply changes to your database. This workflow does not support tracking the history of applied migrations. -## How to connect and query from an embedded replica +## How to connect to and query an embedded Turso database Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. Embedded replicas behave similarly to a local SQLite database. Database queries are faster because your database is inside your application. From d368929acb55eed33104384f9a3982ec26abdad7 Mon Sep 17 00:00:00 2001 From: ruheni Date: Fri, 3 Nov 2023 16:54:03 +0100 Subject: [PATCH 41/43] more modifications --- content/300-guides/050-database/900-turso.mdx | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 558684423d..252228474e 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -148,21 +148,29 @@ To update your database schema: 1. Generate a migration file using `prisma migrate dev` against a local SQLite database: ```terminal - npx prisma migrate dev --name init # Migration name + npx prisma migrate dev --name init ``` 2. Apply the migration using Turso's CLI: ```terminal - turso db shell turso-prisma-db < ./prisma/migrations/20230922132717_init/migration.sql # Replace `20230922132717_init` with the existing migration + turso db shell turso-prisma-db < ./prisma/migrations/20230922132717_init/migration.sql ``` -For subsequent migrations, repeat the above steps to apply changes to your database. This workflow does not support tracking the history of applied migrations. + -## How to connect to and query an embedded Turso database + Replace `20230922132717_init` with the name of your migration. + + + +For subsequent migrations, repeat the above steps to apply changes to your database. This workflow does not support track the history of applied migrations to your remote database. + +## Embedded Turso database replicas Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. Embedded replicas behave similarly to a local SQLite database. Database queries are faster because your database is inside your application. +### How embedded database replicas work + When your app initially establishes a connection to your database, the primary database will fulfill the query: ![Embedded Replica: First remote read](./images/embedded-replica-remote-read.png) @@ -185,7 +193,9 @@ Like a read replica setup you may be familiar with, write operations are forward 1. Database responds to the server with the updates from 1. 1. Write operations are propagated to the database replica. -How often to synchronize you need to synchronize data between your remote database and embedded replica is dependent on your application's data consistency needs. For example, you can use either middleware functions (e.g. Express and Fastify) or a cron job to synchronize the data. +Your application's data needs will determine how often you should synchronize data between your remote database and embedded database replica. For example, you can use either middleware functions (e.g. Express and Fastify) or a cron job to synchronize the data. + +### How to connect and query an embedded database To get started using embedded replicas with Prisma, add the `sync()` method from libSQL in your application. The example below shows how you can synchronize data using Express middleware. From aaaab90171309d1f4a7d602a47f301e6687c2521 Mon Sep 17 00:00:00 2001 From: ruheni Date: Fri, 3 Nov 2023 17:54:20 +0100 Subject: [PATCH 42/43] fix styling --- content/300-guides/050-database/900-turso.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 252228474e..5b42db0c37 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -17,7 +17,7 @@ Prisma support for Turso is currently in [Early Access](/about/prisma/releases#e Turso's logo From 6ddcbc682fd59cc5b868eaa7a390398177903c11 Mon Sep 17 00:00:00 2001 From: ruheni Date: Fri, 3 Nov 2023 17:59:17 +0100 Subject: [PATCH 43/43] update headline --- content/300-guides/050-database/900-turso.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 5b42db0c37..8c14deec49 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -195,7 +195,7 @@ Like a read replica setup you may be familiar with, write operations are forward Your application's data needs will determine how often you should synchronize data between your remote database and embedded database replica. For example, you can use either middleware functions (e.g. Express and Fastify) or a cron job to synchronize the data. -### How to connect and query an embedded database +### How to synchronize data between your remote database and embedded replica To get started using embedded replicas with Prisma, add the `sync()` method from libSQL in your application. The example below shows how you can synchronize data using Express middleware.

7$H4~QS-YH5)AOP0yN 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ÌzlT}I50@z87Tm7^~~O! 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 Date: Tue, 24 Oct 2023 19:14:48 +0200 Subject: [PATCH 02/43] more updates to the Turso guide --- content/300-guides/050-database/900-turso.mdx | 35 +++++++++++++------ 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 30268e82ee..71fe9989f5 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -23,19 +23,14 @@ Many aspects of using Prisma with Turso are just like using Prisma with any othe - use Prisma's existing [`sqlite` database connector](/concepts/database-connectors/sqlite) in your schema - use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Neon -## Specific considerations +## Differences to consider -### Managing schema changes +There are a number of differences between Turso and SQLite to consider. You should be aware of the following when deciding to use Turso and Prisma: -```sh -npx prisma migrate diff -``` +- **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the database and uses a remote file over a local file. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. +- **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). -```sh -turso db shell project_name < path/to/migration-file.sql -``` - -### Connect and query a remote Turso database +### Connect and query your primary database 1. Create an authentication token that will allow you to connect to the database: @@ -100,7 +95,9 @@ const prisma = new PrismaClient({ adapter }) You can use Prisma Client as you normally would with full type-safety as you normally would in your project. -### Connect and query an embedded database replica + + +### How to connect and query from an embedded replica Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. This is similar to having an embedded or SQLite database. @@ -148,3 +145,19 @@ const prismaClientSingleton = () => { return new PrismaClient({ adapter }) } ``` + +### How to manage schema changes + +Generate a SQL migration file using the `prisma migrate diff` command: + + + +```sh +npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > baseline.sql +``` + +Apply the generated migration file to your database: + +```sh +turso db shell project_name < path/to/migration-file.sql +``` From f86b674d028cc96ed2d3ec144fbf320bad22a6c2 Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 24 Oct 2023 19:32:15 +0200 Subject: [PATCH 03/43] chore: update heading levels --- content/300-guides/050-database/900-turso.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 71fe9989f5..0262177902 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -30,7 +30,7 @@ There are a number of differences between Turso and SQLite to consider. You shou - **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the database and uses a remote file over a local file. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. - **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). -### Connect and query your primary database +## Connect and query your primary database 1. Create an authentication token that will allow you to connect to the database: @@ -97,7 +97,7 @@ You can use Prisma Client as you normally would with full type-safety as you nor -### How to connect and query from an embedded replica +## How to connect and query from an embedded replica Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. This is similar to having an embedded or SQLite database. @@ -146,7 +146,7 @@ const prismaClientSingleton = () => { } ``` -### How to manage schema changes +## How to manage schema changes Generate a SQL migration file using the `prisma migrate diff` command: From d24b348bfea13f3438f2896dd725de50f0d535c4 Mon Sep 17 00:00:00 2001 From: Alex Ruheni <33921841+ruheni@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:34:32 +0100 Subject: [PATCH 04/43] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joël Galeran --- content/300-guides/050-database/900-turso.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 0262177902..8727885e41 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -27,7 +27,7 @@ Many aspects of using Prisma with Turso are just like using Prisma with any othe There are a number of differences between Turso and SQLite to consider. You should be aware of the following when deciding to use Turso and Prisma: -- **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the database and uses a remote file over a local file. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. +- **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the database and uses a remote database over a local database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. - **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). ## Connect and query your primary database @@ -71,7 +71,7 @@ datasource db { npx prisma generate ``` -Install the libSQL database client and Prisma adapter for libSQL: +Install the libSQL database client and Prisma adapter for libSQL packages: ```sh npm install @libsql/client @prisma/adapter-libsql @@ -93,13 +93,13 @@ const adapter = new PrismaLibSQL(libsql) const prisma = new PrismaClient({ adapter }) ``` -You can use Prisma Client as you normally would with full type-safety as you normally would in your project. +You can use Prisma Client as you normally would with full type-safety in your project. ## How to connect and query from an embedded replica -Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. This is similar to having an embedded or SQLite database. +Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. This is similar to having a local SQLite database. When your app initially establishes a connection to your database, the primary database will fulfill the query: @@ -113,7 +113,7 @@ The embedded replica will fulfill subsequent read queries. The libSQL client pro ![Embedded Replica: Local DB reads](./images/embedded-replica-read.png) -With embedded replicas, this setup guarantees your app is fast because the data will be readily available locally. +With embedded replicas, this setup guarantees a responsive application, because the data will be readily available locally and faster to access. Like a read replica setup you may be familiar with, write operations are forwarded to the primary remote database and executed before being propagated to all embedded replicas. @@ -141,7 +141,7 @@ const sync = async () => await libsql.sync() const adapter = new PrismaLibSQL(libsql) const prismaClientSingleton = () => { - sync() + await sync() return new PrismaClient({ adapter }) } ``` From 6c08f0d447df87742762cd2a0c7af46626260e20 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 25 Oct 2023 14:33:09 +0200 Subject: [PATCH 05/43] update db name used in guide --- content/300-guides/050-database/900-turso.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 8727885e41..2281333c1f 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -35,20 +35,20 @@ There are a number of differences between Turso and SQLite to consider. You shou 1. Create an authentication token that will allow you to connect to the database: ```sh -turso db tokens create turso-prisma +turso db tokens create turso-prisma-db ``` 1. Retrieve your database's connection string: ```sh -turso db show turso-prisma +turso db show turso-prisma-db ``` 1. Update your `.env` file with the authentication token and connection string: ```text TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." -TURSO_DATABASE_URL="libsql://turso-prisma-user.turso.io" +TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" ``` 1. Enable the `driverAdapters` Preview feature flag: From de2b5d4670da54d78258324ab0bb56fd3e377403 Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 10:17:00 +0100 Subject: [PATCH 06/43] update guide --- content/300-guides/050-database/900-turso.mdx | 140 ++++++++++-------- 1 file changed, 75 insertions(+), 65 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 2281333c1f..cd90731488 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -1,13 +1,15 @@ --- title: 'Using Prisma with Turso' -metaTitle: 'Using Prisma with Turso' +metaTitle: 'Using Prisma with Turso (Early Access)' metaDescription: 'Guide to using Prisma with Turso' tocDepth: 3 --- -This guide discusses the concepts behind using Prisma and Turso, explains the commonalities and differences between Turso and other database providers, and leads you through the process for configuring your application to integrate with Turso +This guide discusses the concepts behind using Prisma and Turso, explains the commonalities and differences between Turso and other database providers, and leads you through the process for configuring your application to integrate with Turso. + +Prisma support for Turso is currently in [Early Access](/about/prisma/releases#early-access). We would appreciate your feedback in this [GitHub discussion](https://github.com/prisma/prisma/discussions/21345). @@ -27,75 +29,99 @@ Many aspects of using Prisma with Turso are just like using Prisma with any othe There are a number of differences between Turso and SQLite to consider. You should be aware of the following when deciding to use Turso and Prisma: -- **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the database and uses a remote database over a local database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. +- **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the remote SQLite database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. - **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). ## Connect and query your primary database -1. Create an authentication token that will allow you to connect to the database: +1. Create a database on Turso if you don't have one already: -```sh -turso db tokens create turso-prisma-db -``` + ```sh + turso db create turso-prisma-db + ``` -1. Retrieve your database's connection string: +2. Retrieve the database's connection string: -```sh -turso db show turso-prisma-db -``` + ```sh + turso db show turso-prisma-db + ``` -1. Update your `.env` file with the authentication token and connection string: +3. Create an authentication token that will allow you to connect to the database: -```text -TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." -TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" -``` + ```sh + turso db tokens create turso-prisma-db + ``` -1. Enable the `driverAdapters` Preview feature flag: +4. Update your `.env` file with the authentication token and connection string: -```prisma -generator client { - provider = "prisma-client-js" - previewFeatures = ["driverAdapters"] -} + ```text + TURSO_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." + TURSO_DATABASE_URL="libsql://turso-prisma-db-user.turso.io" + ``` -datasource db { - provider = "sqlite" - url = "file:./dev.db" -} -``` +5. Enable the `driverAdapters` Preview feature flag: -1. Generate Prisma Client: + ```prisma highlight=3;add + generator client { + provider = "prisma-client-js" + previewFeatures = ["driverAdapters"] + } + + datasource db { + provider = "sqlite" + url = "file:./dev.db" + } + ``` -```sh -npx prisma generate -``` +6. Generate Prisma Client: -Install the libSQL database client and Prisma adapter for libSQL packages: + ```sh + npx prisma generate + ``` -```sh -npm install @libsql/client @prisma/adapter-libsql -``` +7. Install the libSQL database client and Prisma driver adapter for libSQL packages: -Update your Prisma Client instance with the following snippet: + ```sh + npm install @libsql/client @prisma/adapter-libsql + ``` -```ts -import { PrismaClient } from '@prisma/client' -import { PrismaLibSQL } from '@prisma/adapter-libsql' -import { createClient } from '@libsql/client' +8. Update your Prisma Client instance with the following snippet: -const libsql = createClient({ - url: `${process.env.TURSO_DATABASE_URL}`, - authToken: `${process.env.TURSO_AUTH_TOKEN}`, -}) + ```ts + import { PrismaClient } from '@prisma/client' + import { PrismaLibSQL } from '@prisma/adapter-libsql' + import { createClient } from '@libsql/client' -const adapter = new PrismaLibSQL(libsql) -const prisma = new PrismaClient({ adapter }) -``` + const libsql = createClient({ + url: `${process.env.TURSO_DATABASE_URL}`, + authToken: `${process.env.TURSO_AUTH_TOKEN}`, + }) + + const adapter = new PrismaLibSQL(libsql) + const prisma = new PrismaClient({ adapter }) + ``` You can use Prisma Client as you normally would with full type-safety in your project. - +## How to manage schema changes + +Prisma Migrate and Introspection workflows are currently not supported when working with Turso. This is because Turso uses HTTP to connect to your database, which Prisma Migrate doesn't support. + +To update your database schema: + +1. Generate a migration file using `prisma migrate dev` against a local SQLite database: + +```sh +npx prisma migrate dev --name init # Migration name +``` + +2. Apply the migration using Turso's CLI: + +```sh +turso db shell turso-prisma-db < ./prisma/migrations/20230922132717_init/migration.sql # Replace `20230922132717_init` with the existing migration +``` + +This workflow does not support tracking the history of applied migrations. ## How to connect and query from an embedded replica @@ -125,7 +151,7 @@ Like a read replica setup you may be familiar with, write operations are forward To get started using embedded replicas with Prisma, update your Prisma Client instance with the following changes: -```ts highlight=6,7,11,15;add +```ts highlight=6,7,11,16;add import { PrismaClient } from '@prisma/client' import { PrismaLibSQL } from '@prisma/adapter-libsql' import { createClient } from '@libsql/client' @@ -145,19 +171,3 @@ const prismaClientSingleton = () => { return new PrismaClient({ adapter }) } ``` - -## How to manage schema changes - -Generate a SQL migration file using the `prisma migrate diff` command: - - - -```sh -npx prisma migrate diff --from-empty --to-schema-datamodel prisma/schema.prisma --script > baseline.sql -``` - -Apply the generated migration file to your database: - -```sh -turso db shell project_name < path/to/migration-file.sql -``` From dcae7f656482deaa317b412b343b39a3a601bc4f Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 10:24:50 +0100 Subject: [PATCH 07/43] chore: fix copy-pasta mistake --- content/300-guides/050-database/900-turso.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index cd90731488..24b9421817 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -7,7 +7,7 @@ tocDepth: 3 -This guide discusses the concepts behind using Prisma and Turso, explains the commonalities and differences between Turso and other database providers, and leads you through the process for configuring your application to integrate with Turso. +This guide discusses the concepts behind using Prisma and Turso, explains the commonalities and differences between Turso and other database providers, and leads you through the process for configuring your application to integrate with Turso. Turso can also be hosted on a remote server. Prisma support for Turso is currently in [Early Access](/about/prisma/releases#early-access). We would appreciate your feedback in this [GitHub discussion](https://github.com/prisma/prisma/discussions/21345). @@ -23,7 +23,7 @@ Many aspects of using Prisma with Turso are just like using Prisma with any othe - model your database with the [Prisma Schema Language](/concepts/components/prisma-schema) - use Prisma's existing [`sqlite` database connector](/concepts/database-connectors/sqlite) in your schema -- use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Neon +- use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Turso ## Differences to consider From 9721eb6ec0b45998cf61b61fda9a4430cf53d7b5 Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 10:37:30 +0100 Subject: [PATCH 08/43] docs: link to libSQL manifesto --- content/300-guides/050-database/900-turso.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 24b9421817..f005a32019 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -32,6 +32,8 @@ There are a number of differences between Turso and SQLite to consider. You shou - **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the remote SQLite database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. - **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). +To learn more about the differences between libSQL and how it is different from SQLite, see [libSQL Manifesto](https://turso.tech/libsql-manifesto). + ## Connect and query your primary database 1. Create a database on Turso if you don't have one already: From 54568b65f7d292cd1c8f3439c9cdbb14053496bf Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 10:55:45 +0100 Subject: [PATCH 09/43] chore: add features an differences between sqlite and turso --- content/300-guides/050-database/900-turso.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index f005a32019..e4ca9fa5ca 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -32,6 +32,14 @@ There are a number of differences between Turso and SQLite to consider. You shou - **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the remote SQLite database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. - **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). +libSQL is 100% compatible with SQLite. libSQL extends SQLite with the following features and capabilities: + +- Support for replication +- Support for automated backups +- Ability to embed Turso as part of other programs such as the Linux kernel +- Supports user-defined functions +- Support for asynchronous I/O + To learn more about the differences between libSQL and how it is different from SQLite, see [libSQL Manifesto](https://turso.tech/libsql-manifesto). ## Connect and query your primary database From 037469db2aeb292654cc452271597854305a4ccd Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 10:57:39 +0100 Subject: [PATCH 10/43] reorder content --- content/300-guides/050-database/900-turso.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index e4ca9fa5ca..986238b45a 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -27,11 +27,6 @@ Many aspects of using Prisma with Turso are just like using Prisma with any othe ## Differences to consider -There are a number of differences between Turso and SQLite to consider. You should be aware of the following when deciding to use Turso and Prisma: - -- **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the remote SQLite database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. -- **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). - libSQL is 100% compatible with SQLite. libSQL extends SQLite with the following features and capabilities: - Support for replication @@ -42,6 +37,11 @@ libSQL is 100% compatible with SQLite. libSQL extends SQLite with the following To learn more about the differences between libSQL and how it is different from SQLite, see [libSQL Manifesto](https://turso.tech/libsql-manifesto). +There are a number of differences between Turso and SQLite to consider. You should be aware of the following when deciding to use Turso and Prisma: + +- **Remote and embedded SQLite databases**. libSQL uses HTTP to connect to the remote SQLite database. libSQL also supports remote database replicas and embedded replicas. Embedded replicas enable you to replicate your primary database inside your application. +- **Making schema changes**. Since libSQL uses HTTP to connect to the remote database, this makes it incompatible with Prisma Migrate. However, you can use [`prisma migrate diff`](/reference/api-reference/command-reference#migrate-diff) to create a schema migration and then apply the changes to your database using [Turso's CLI](https://docs.turso.tech/reference/turso-cli). + ## Connect and query your primary database 1. Create a database on Turso if you don't have one already: From bb0c2196f93bb594aba9ccf7aadb59e373c6a241 Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 16:03:17 +0100 Subject: [PATCH 11/43] indent content --- content/300-guides/050-database/900-turso.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 986238b45a..ce7f3d0054 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -121,15 +121,15 @@ To update your database schema: 1. Generate a migration file using `prisma migrate dev` against a local SQLite database: -```sh -npx prisma migrate dev --name init # Migration name -``` + ```sh + npx prisma migrate dev --name init # Migration name + ``` 2. Apply the migration using Turso's CLI: -```sh -turso db shell turso-prisma-db < ./prisma/migrations/20230922132717_init/migration.sql # Replace `20230922132717_init` with the existing migration -``` + ```sh + turso db shell turso-prisma-db < ./prisma/migrations/20230922132717_init/migration.sql # Replace `20230922132717_init` with the existing migration + ``` This workflow does not support tracking the history of applied migrations. From 64ecbff2c7f0681ba6a901c6551dd1c102a8ed8e Mon Sep 17 00:00:00 2001 From: Raouf Chebri Date: Wed, 7 Jun 2023 09:17:33 +0200 Subject: [PATCH 12/43] Create 890-Neon --- content/300-guides/050-database/890-Neon | 131 +++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 content/300-guides/050-database/890-Neon diff --git a/content/300-guides/050-database/890-Neon b/content/300-guides/050-database/890-Neon new file mode 100644 index 0000000000..394ca67281 --- /dev/null +++ b/content/300-guides/050-database/890-Neon @@ -0,0 +1,131 @@ +--- +title: 'Using Prisma with Neon' +metaTitle: 'Using Prisma with Neon' +metaDescription: 'Guide to using Prisma with Neon' +tocDepth: 2 +toc: true +--- + + + +This guide explains how to connect Prisma to Neon, establish connections when using Prisma Client in serverless functions, and resolve [connection timeout](#connection-timeouts) issues. + +To configure Prisma Migrate with Neon, see [Use Prisma Migrate with Neon](../guides/prisma-migrate). + + + +## What is Neon? + +[Neon](https://neon.tech/) Neon is a fully managed serverless PostgreSQL with a generous free tier. Neon separates storage and compute and offers modern developer features such as serverless, branching, bottomless storage, and more. Neon is open source and written in Rust. + +Learn more about Neon [here](https://neon.tech/docs). + +## Prerequisites + +- A Neon project. See [Create a project](../manage/projects#create-a-project). +- A Prisma project. See [Set up Prisma](https://www.prisma.io/docs/getting-started/setup-prisma), in the _Prisma documentation_. + +## Connect to Neon from Prisma + +To establish a basic connection from Prisma to Neon, perform the following steps: + +1. Retrieve your Neon connection string. In the **Connection Details** widget on the Neon **Dashboard**, select a branch, a user, and the database you want to connect to. A connection string is constructed for you. + ![Connection details widget](/docs/connect/connection_details.png) + The connection string includes the user name, password, hostname, and database name. + +2. Add the following lines to your `prisma/schema.prisma` file to identify the data source and database URL: + + ```typescript + datasource db { + provider = "postgresql" + url = env("DATABASE_URL") + } + ``` + +3. Add a `DATABASE_URL` variable to your `.env` file and set it to the Neon connection string that you copied in the previous step. Your setting will appear similar to the following: + + + + ```text + DATABASE_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" + ``` + + + + +If you are using Prisma Client from a serverless function, see [Connect from serverless functions](#connect-from-serverless-functions). To adjust your connection string to avoid connection timeouts issues, see [Connection timeouts](#connection-timeouts). + + +## Connect from serverless functions + +Serverless functions typically require a large number of database connections. When connecting from Prisma Client to Neon from a serverless function, you should use a pooled connection string. Neon uses the PgBouncer connection pooler, which maintains a pool of connections to the database, allowing Neon to support a large number of concurrent connections. + +To use a pooled connection from Prisma, adjust your Neon connection string by adding a `-pooler` suffix to the endpoint ID and appending the `?pgbouncer=true` flag to the connection string, as shown: + + + +```text +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` +``` + + + +The `-pooler` suffix tells Neon to use a pooled connection rather than a direct connection. The `?pgbouncer=true` flag requires that the connection uses PgBouncer. + + +The **Connection Details** widget on the Neon **Dashboard** provides a **Pooled connection** tab with a pooled connection string that you can copy and paste. + + +For more information about PgBouncer and pooled connection strings, see [Enable connection pooling](../connect/connection-pooling#enable-connection-pooling). For related information in the _Prisma documentation_, refer to [Add pgbouncer to the connection URL](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management/configure-pg-bouncer#add-pgbouncer-to-the-connection-url). + +## Connection timeouts + +A connection timeout that occurs when connecting from Prisma to Neon causes an error similar to the following: + + + +```text +Error: P1001: Can't reach database server at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432` +Please make sure your database server is running at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432`. +``` + + + +This error most likely means that the Prisma query engine timed out before the Neon compute was activated. + +A Neon compute has two main states: _Active_ and _Idle_. Active means that the compute is currently running. If there is no query activity for 5 minutes, Neon places a compute into an idle state by default. + +When you connect to an idle compute from Prisma, Neon automatically activates it. Activation typically happens within a few seconds but added latency can result in a connection timeout. To address this issue, your can adjust your Neon connection string by adding a `connect_timeout` parameter. This parameter defines the maximum number of seconds to wait for a new connection to be opened. The default value is 5 seconds. A higher setting should provide the time required to avoid connection timeout issues. For example: + + + +```text +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=10` +``` + + + + +A `connect_timeout` setting of 0 means no timeout. + + +Another possible cause of connection timeouts is [Prisma's connection pool](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/), which has a default timeout of 10 seconds. This is typically enough time for Neon, but if you are still experiencing connection timeouts, you can try increasing this limit (in addition to the `connect_timeout` setting described above) by setting the `pool_timeout` parameter to a higher value. For example: + + + +```text +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=15&pool_timeout=15` +``` + + + +For additional information about connecting from Prisma, refer to the following resources in the _Prisma documentation_: + +- [Connection management](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management) +- [Database connection issues](https://www.prisma.io/dataguide/managing-databases/database-troubleshooting#database-connection-issues) +- [PostgreSQL database connector](https://www.prisma.io/docs/concepts/database-connectors/postgresql) +- [Increasing the pool timeout](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management#increasing-the-pool-timeout) + +## Need help? + +Send a request to [support@neon.tech](mailto:support@neon.tech), or join the [Neon community forum](https://community.neon.tech/). From 633cd0119c04a1f15438b767bd0a45e916190c57 Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 24 Oct 2023 14:39:52 +0200 Subject: [PATCH 13/43] docs: update Neon docs --- content/300-guides/050-database/890-Neon | 131 ------------------- content/300-guides/050-database/890-neon.mdx | 101 ++++++++++++++ 2 files changed, 101 insertions(+), 131 deletions(-) delete mode 100644 content/300-guides/050-database/890-Neon create mode 100644 content/300-guides/050-database/890-neon.mdx diff --git a/content/300-guides/050-database/890-Neon b/content/300-guides/050-database/890-Neon deleted file mode 100644 index 394ca67281..0000000000 --- a/content/300-guides/050-database/890-Neon +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: 'Using Prisma with Neon' -metaTitle: 'Using Prisma with Neon' -metaDescription: 'Guide to using Prisma with Neon' -tocDepth: 2 -toc: true ---- - - - -This guide explains how to connect Prisma to Neon, establish connections when using Prisma Client in serverless functions, and resolve [connection timeout](#connection-timeouts) issues. - -To configure Prisma Migrate with Neon, see [Use Prisma Migrate with Neon](../guides/prisma-migrate). - - - -## What is Neon? - -[Neon](https://neon.tech/) Neon is a fully managed serverless PostgreSQL with a generous free tier. Neon separates storage and compute and offers modern developer features such as serverless, branching, bottomless storage, and more. Neon is open source and written in Rust. - -Learn more about Neon [here](https://neon.tech/docs). - -## Prerequisites - -- A Neon project. See [Create a project](../manage/projects#create-a-project). -- A Prisma project. See [Set up Prisma](https://www.prisma.io/docs/getting-started/setup-prisma), in the _Prisma documentation_. - -## Connect to Neon from Prisma - -To establish a basic connection from Prisma to Neon, perform the following steps: - -1. Retrieve your Neon connection string. In the **Connection Details** widget on the Neon **Dashboard**, select a branch, a user, and the database you want to connect to. A connection string is constructed for you. - ![Connection details widget](/docs/connect/connection_details.png) - The connection string includes the user name, password, hostname, and database name. - -2. Add the following lines to your `prisma/schema.prisma` file to identify the data source and database URL: - - ```typescript - datasource db { - provider = "postgresql" - url = env("DATABASE_URL") - } - ``` - -3. Add a `DATABASE_URL` variable to your `.env` file and set it to the Neon connection string that you copied in the previous step. Your setting will appear similar to the following: - - - - ```text - DATABASE_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" - ``` - - - - -If you are using Prisma Client from a serverless function, see [Connect from serverless functions](#connect-from-serverless-functions). To adjust your connection string to avoid connection timeouts issues, see [Connection timeouts](#connection-timeouts). - - -## Connect from serverless functions - -Serverless functions typically require a large number of database connections. When connecting from Prisma Client to Neon from a serverless function, you should use a pooled connection string. Neon uses the PgBouncer connection pooler, which maintains a pool of connections to the database, allowing Neon to support a large number of concurrent connections. - -To use a pooled connection from Prisma, adjust your Neon connection string by adding a `-pooler` suffix to the endpoint ID and appending the `?pgbouncer=true` flag to the connection string, as shown: - - - -```text -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` -``` - - - -The `-pooler` suffix tells Neon to use a pooled connection rather than a direct connection. The `?pgbouncer=true` flag requires that the connection uses PgBouncer. - - -The **Connection Details** widget on the Neon **Dashboard** provides a **Pooled connection** tab with a pooled connection string that you can copy and paste. - - -For more information about PgBouncer and pooled connection strings, see [Enable connection pooling](../connect/connection-pooling#enable-connection-pooling). For related information in the _Prisma documentation_, refer to [Add pgbouncer to the connection URL](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management/configure-pg-bouncer#add-pgbouncer-to-the-connection-url). - -## Connection timeouts - -A connection timeout that occurs when connecting from Prisma to Neon causes an error similar to the following: - - - -```text -Error: P1001: Can't reach database server at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432` -Please make sure your database server is running at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432`. -``` - - - -This error most likely means that the Prisma query engine timed out before the Neon compute was activated. - -A Neon compute has two main states: _Active_ and _Idle_. Active means that the compute is currently running. If there is no query activity for 5 minutes, Neon places a compute into an idle state by default. - -When you connect to an idle compute from Prisma, Neon automatically activates it. Activation typically happens within a few seconds but added latency can result in a connection timeout. To address this issue, your can adjust your Neon connection string by adding a `connect_timeout` parameter. This parameter defines the maximum number of seconds to wait for a new connection to be opened. The default value is 5 seconds. A higher setting should provide the time required to avoid connection timeout issues. For example: - - - -```text -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=10` -``` - - - - -A `connect_timeout` setting of 0 means no timeout. - - -Another possible cause of connection timeouts is [Prisma's connection pool](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/), which has a default timeout of 10 seconds. This is typically enough time for Neon, but if you are still experiencing connection timeouts, you can try increasing this limit (in addition to the `connect_timeout` setting described above) by setting the `pool_timeout` parameter to a higher value. For example: - - - -```text -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=15&pool_timeout=15` -``` - - - -For additional information about connecting from Prisma, refer to the following resources in the _Prisma documentation_: - -- [Connection management](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management) -- [Database connection issues](https://www.prisma.io/dataguide/managing-databases/database-troubleshooting#database-connection-issues) -- [PostgreSQL database connector](https://www.prisma.io/docs/concepts/database-connectors/postgresql) -- [Increasing the pool timeout](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management#increasing-the-pool-timeout) - -## Need help? - -Send a request to [support@neon.tech](mailto:support@neon.tech), or join the [Neon community forum](https://community.neon.tech/). diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx new file mode 100644 index 0000000000..5371d0a8ba --- /dev/null +++ b/content/300-guides/050-database/890-neon.mdx @@ -0,0 +1,101 @@ +--- +title: 'Using Prisma with Neon' +metaTitle: 'Using Prisma with Neon' +metaDescription: 'Guide to using Prisma with Neon' +tocDepth: 2 +toc: true +--- + + + +This guide explains how to connect Prisma to Neon, establish connections when using Prisma Client in serverless functions, and resolve [connection timeout](#connection-timeouts) issues. + +To configure Prisma Migrate with Neon, see [Use Prisma Migrate with Neon](../guides/prisma-migrate). + + + +## What is Neon? + +[Neon](https://neon.tech/) Neon is a fully managed serverless PostgreSQL with a generous free tier. Neon separates storage and compute and offers modern developer features such as serverless, branching, bottomless storage, and more. Neon is open source and written in Rust. + +Learn more about Neon [here](https://neon.tech/docs). + +## Commonalities with other database providers + +Many aspects of using Prisma with Neon are just like using Prisma with any other relational database. You can still: + +- model your database with the [Prisma Schema Language](/concepts/components/prisma-schema) +- use Prisma's existing [`postgresql` database connector](/concepts/database-connectors/postgresql) in your schema, along with the [connection string Neon provides you](https://neon.tech/docs/connect/connect-from-any-app) +- use [Introspection](/concepts/components/introspection) for existing projects if you already have a database schema on Neon +- use [`prisma migrate dev`](/concepts/components/prisma-migrate/migrate-development-productoin) to track schema migrations in your Neon database +- use [`prisma db push`](/concepts/components/prisma-migrate/db-push) to push changes in your schema to Neon +- use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Neon + +## How to use Neon's connection pooling + +If you'd like to use the [connection pooling](https://neon.tech/blog/prisma-dx-improvements#providing-pooled-and-direct-connections-to-the-database) available in Neon, you will +need to add `pgbouncer=true` to the end of the `DATABASE_URL` environment variable used in the `datasource.url` property: + +```env file=.env +# Connect to Neon with PgBouncer. +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` +``` + +If you would like to use the Prisma CLI in order to perform other actions on your database (e.g. migrations) you will need to add a `DIRECT_URL` environment variable to use in the `datasource.directUrl` property so that the CLI can bypass PgBouncer: + +```env file=.env highlight=4-5;add +# Connect to Neon with PgBouncer. +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` + +# Direct connection to the database. Used for migrations. +DATABASE_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" +``` + +You can then update your `schema.prisma` to use the new direct URL: + +```prisma file=schema.prisma highlight=4;add +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") + directUrl = env("DIRECT_URL") +} +``` + +More information about the `directUrl` field can be found [here](/reference/api-reference/prisma-schema-reference#fields). + + + +We strongly recommend using `pgbouncer` in addition to `DIRECT_URL`. You will gain the great developer experience of the Prisma CLI while also allowing for connections to be pooled regardless of deployment strategy. While this is not strictly necessary for every app, serverless solutions will inevitably require connection pooling. + + + +## Resolving connection timeouts on Neon + +A connection timeout that occurs when connecting from Prisma to Neon causes an error similar to the following: + +```text +Error: P1001: Can't reach database server at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432` +Please make sure your database server is running at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432`. +``` + +This error most likely means that the Prisma query engine timed out before the Neon compute was activated. + +A Neon compute has two main states: _Active_ and _Idle_. Active means that the compute is currently running. If there is no query activity for 5 minutes, Neon places a compute into an idle state by default. + +When you connect to an idle compute from Prisma, Neon automatically activates it. Activation typically happens within a few seconds but added latency can result in a connection timeout. To address this issue, your can adjust your Neon connection string by adding a `connect_timeout` parameter. This parameter defines the maximum number of seconds to wait for a new connection to be opened. The default value is 5 seconds. A higher setting should provide the time required to avoid connection timeout issues. For example: + +```text +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=10` +``` + + + +A `connect_timeout` setting of 0 means no timeout. + + + +Another possible cause of connection timeouts is [Prisma's connection pool](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/), which has a default timeout of 10 seconds. This is typically enough time for Neon, but if you are still experiencing connection timeouts, you can try increasing this limit (in addition to the `connect_timeout` setting described above) by setting the `pool_timeout` parameter to a higher value. For example: + +```text +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=15&pool_timeout=15` +``` From 23efa0dbcdd29fdaefdeac1aaf839fa9329a4ebc Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 24 Oct 2023 14:46:46 +0200 Subject: [PATCH 14/43] update heading --- content/300-guides/050-database/890-neon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index 5371d0a8ba..79d3c5f0fb 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -69,7 +69,7 @@ We strongly recommend using `pgbouncer` in addition to `DIRECT_URL`. You will ga -## Resolving connection timeouts on Neon +## Resolving connection timeouts A connection timeout that occurs when connecting from Prisma to Neon causes an error similar to the following: From 004470e4e4690dd746a25b7f60087c2d88385b84 Mon Sep 17 00:00:00 2001 From: Alex Ruheni <33921841+ruheni@users.noreply.github.com> Date: Wed, 25 Oct 2023 10:28:38 +0100 Subject: [PATCH 15/43] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joël Galeran --- content/300-guides/050-database/890-neon.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index 79d3c5f0fb..fd60b4f98c 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -29,26 +29,26 @@ Many aspects of using Prisma with Neon are just like using Prisma with any other - use [Introspection](/concepts/components/introspection) for existing projects if you already have a database schema on Neon - use [`prisma migrate dev`](/concepts/components/prisma-migrate/migrate-development-productoin) to track schema migrations in your Neon database - use [`prisma db push`](/concepts/components/prisma-migrate/db-push) to push changes in your schema to Neon -- use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Neon +- use [Prisma Client](/concepts/components/prisma-client) in your application to communicate with the database hosted by Neon ## How to use Neon's connection pooling If you'd like to use the [connection pooling](https://neon.tech/blog/prisma-dx-improvements#providing-pooled-and-direct-connections-to-the-database) available in Neon, you will -need to add `pgbouncer=true` to the end of the `DATABASE_URL` environment variable used in the `datasource.url` property: +need to add `pgbouncer=true` to the end of the `DATABASE_URL` environment variable used in the `url` property of the `datasource` block of your Prisma schema: ```env file=.env # Connect to Neon with PgBouncer. DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` ``` -If you would like to use the Prisma CLI in order to perform other actions on your database (e.g. migrations) you will need to add a `DIRECT_URL` environment variable to use in the `datasource.directUrl` property so that the CLI can bypass PgBouncer: +If you would like to use the Prisma CLI in order to perform other actions on your database (e.g. migrations) you will need to add a `DIRECT_URL` environment variable to use in the `directUrl` property of the `datasource` block of your Prisma schema so that the CLI can use a direct connection string (without PgBouncer): ```env file=.env highlight=4-5;add # Connect to Neon with PgBouncer. DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` # Direct connection to the database. Used for migrations. -DATABASE_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" +DIRECT_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" ``` You can then update your `schema.prisma` to use the new direct URL: @@ -78,7 +78,7 @@ Error: P1001: Can't reach database server at `ep-white-thunder-826300.us-east-2. Please make sure your database server is running at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432`. ``` -This error most likely means that the Prisma query engine timed out before the Neon compute was activated. +This error most likely means that the Prisma Query Engine timed out before the Neon compute was activated. A Neon compute has two main states: _Active_ and _Idle_. Active means that the compute is currently running. If there is no query activity for 5 minutes, Neon places a compute into an idle state by default. From 6a97d9a3569fc983aac6ea84874a5cae4e0c9fdf Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 25 Oct 2023 14:08:39 +0200 Subject: [PATCH 16/43] chore: update top block --- content/300-guides/050-database/890-neon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index fd60b4f98c..eb8800f4fc 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -8,7 +8,7 @@ toc: true -This guide explains how to connect Prisma to Neon, establish connections when using Prisma Client in serverless functions, and resolve [connection timeout](#connection-timeouts) issues. +This guide explains how to connect Prisma using Neon's connection pooling feature, and resolve [connection timeout](#connection-timeouts) issues. To configure Prisma Migrate with Neon, see [Use Prisma Migrate with Neon](../guides/prisma-migrate). From 7d2338a2b3170ac442d62f8f6176c5cfc63701cf Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 25 Oct 2023 14:13:10 +0200 Subject: [PATCH 17/43] add serverless driver section --- content/300-guides/050-database/890-neon.mdx | 53 ++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index eb8800f4fc..93f8dfdbbe 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -99,3 +99,56 @@ Another possible cause of connection timeouts is [Prisma's connection pool](http ```text DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=15&pool_timeout=15` ``` + +## How to use Neon's serverless driver with Prisma (Preview) + +The [Neon serverless driver](https://github.com/neondatabase/serverless) is a low-latency Postgres driver for JavaScript and TypeScript that allows you to query data from serverless and edge environments over HTTP or WebSockets in place of TCP. Prisma by default uses TCP. + +You can use Prisma along with the Neon serverless driver using a [driver adapter](/concepts/components/drivers) . A driver adapter allows you to use a different database driver, from the default Prisma provides, to communicate with your database. + + + +This feature is available from Prisma versions 5.4.2 and later. + + + +To get started, enable the `driverAdapters` Preview feature flag: + +```prisma +generator client { + provider = "prisma-client-js" + previewFeatures = ["driverAdapters"] +} +``` + +Generate Prisma Client: + +```sh +npx prisma generate +``` + +Install the Prisma adapter for Neon, Neon serverless driver and ws packages: + +```sh +npm install @prisma/adapter-neon @neondatabase/serverless ws +``` + +Update your Prisma Client instance: + +```ts +import { Pool, neonConfig } from '@neondatabase/serverless' +import { PrismaNeon } from '@prisma/adapter-neon' +import { PrismaClient } from '@prisma/client' +import dotenv from 'dotenv' +import ws from 'ws' + +dotenv.config() +neonConfig.webSocketConstructor = ws +const connectionString = `${process.env.DATABASE_URL}` + +const pool = new Pool({ connectionString }) +const adapter = new PrismaNeon(pool) +const prisma = new PrismaClient({ adapter }) +``` + +You can then use Prisma Client as you normally would with full-type-safety. From 95872f236cb0e015ba479801c01b775543fd8db5 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 25 Oct 2023 14:19:22 +0200 Subject: [PATCH 18/43] update admonition about database_url env var --- content/300-guides/050-database/890-neon.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index 93f8dfdbbe..8c23fdf63c 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -65,7 +65,7 @@ More information about the `directUrl` field can be found [here](/reference/api- -We strongly recommend using `pgbouncer` in addition to `DIRECT_URL`. You will gain the great developer experience of the Prisma CLI while also allowing for connections to be pooled regardless of deployment strategy. While this is not strictly necessary for every app, serverless solutions will inevitably require connection pooling. +We strongly recommend using the pooled connection string in your `DATABASE_URL` environment variable. You will gain the great developer experience of the Prisma CLI while also allowing for connections to be pooled regardless of deployment strategy. While this is not strictly necessary for every app, serverless solutions will inevitably require connection pooling. From d543aca058c67b28bd175995135d4dcdbbb6eb01 Mon Sep 17 00:00:00 2001 From: Alex Ruheni <33921841+ruheni@users.noreply.github.com> Date: Fri, 27 Oct 2023 22:56:47 +0100 Subject: [PATCH 19/43] Apply suggestions from code review Co-authored-by: Jan Piotrowski --- content/300-guides/050-database/890-neon.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index 8c23fdf63c..df231c03f6 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -16,7 +16,7 @@ To configure Prisma Migrate with Neon, see [Use Prisma Migrate with Neon](../gui ## What is Neon? -[Neon](https://neon.tech/) Neon is a fully managed serverless PostgreSQL with a generous free tier. Neon separates storage and compute and offers modern developer features such as serverless, branching, bottomless storage, and more. Neon is open source and written in Rust. +[Neon](https://neon.tech/) is a fully managed serverless PostgreSQL with a generous free tier. Neon separates storage and compute, and offers modern developer features such as serverless, branching, bottomless storage, and more. Neon is open source and written in Rust. Learn more about Neon [here](https://neon.tech/docs). @@ -108,7 +108,7 @@ You can use Prisma along with the Neon serverless driver using a [driver adapter -This feature is available from Prisma versions 5.4.2 and later. +This feature is available in Preview from Prisma versions 5.4.2 and later. @@ -127,7 +127,7 @@ Generate Prisma Client: npx prisma generate ``` -Install the Prisma adapter for Neon, Neon serverless driver and ws packages: +Install the Prisma adapter for Neon, Neon serverless driver and `ws` packages: ```sh npm install @prisma/adapter-neon @neondatabase/serverless ws From f4e4c61b4ecec47da8c586a376b4bf93b2791a79 Mon Sep 17 00:00:00 2001 From: Alex Ruheni <33921841+ruheni@users.noreply.github.com> Date: Fri, 27 Oct 2023 22:57:17 +0100 Subject: [PATCH 20/43] Apply suggestions from code review --- content/300-guides/050-database/890-neon.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index df231c03f6..7df3810a69 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -10,7 +10,6 @@ toc: true This guide explains how to connect Prisma using Neon's connection pooling feature, and resolve [connection timeout](#connection-timeouts) issues. -To configure Prisma Migrate with Neon, see [Use Prisma Migrate with Neon](../guides/prisma-migrate). From d7589b75f752dea32741aef8e3bbc92944ae4125 Mon Sep 17 00:00:00 2001 From: ruheni Date: Mon, 30 Oct 2023 15:36:45 +0100 Subject: [PATCH 21/43] update example connection string --- content/300-guides/050-database/890-neon.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index 7df3810a69..5a25906ca5 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -10,7 +10,6 @@ toc: true This guide explains how to connect Prisma using Neon's connection pooling feature, and resolve [connection timeout](#connection-timeouts) issues. - ## What is Neon? @@ -44,7 +43,7 @@ If you would like to use the Prisma CLI in order to perform other actions on you ```env file=.env highlight=4-5;add # Connect to Neon with PgBouncer. -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech/neondb?pgbouncer=true` # Direct connection to the database. Used for migrations. DIRECT_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" From 0b30410523995d74d1342a4f7e320ac7756fa6ec Mon Sep 17 00:00:00 2001 From: ruheni Date: Mon, 30 Oct 2023 15:44:16 +0100 Subject: [PATCH 22/43] minor edits --- content/300-guides/050-database/890-neon.mdx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index 5a25906ca5..b348475c14 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -36,14 +36,14 @@ need to add `pgbouncer=true` to the end of the `DATABASE_URL` environment variab ```env file=.env # Connect to Neon with PgBouncer. -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true` +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true ``` If you would like to use the Prisma CLI in order to perform other actions on your database (e.g. migrations) you will need to add a `DIRECT_URL` environment variable to use in the `directUrl` property of the `datasource` block of your Prisma schema so that the CLI can use a direct connection string (without PgBouncer): ```env file=.env highlight=4-5;add # Connect to Neon with PgBouncer. -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech/neondb?pgbouncer=true` +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech/neondb?pgbouncer=true # Direct connection to the database. Used for migrations. DIRECT_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" @@ -71,7 +71,7 @@ We strongly recommend using the pooled connection string in your `DATABASE_URL` A connection timeout that occurs when connecting from Prisma to Neon causes an error similar to the following: -```text +```text no-copy Error: P1001: Can't reach database server at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432` Please make sure your database server is running at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432`. ``` @@ -82,11 +82,11 @@ A Neon compute has two main states: _Active_ and _Idle_. Active means that the c When you connect to an idle compute from Prisma, Neon automatically activates it. Activation typically happens within a few seconds but added latency can result in a connection timeout. To address this issue, your can adjust your Neon connection string by adding a `connect_timeout` parameter. This parameter defines the maximum number of seconds to wait for a new connection to be opened. The default value is 5 seconds. A higher setting should provide the time required to avoid connection timeout issues. For example: -```text -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=10` +```text wrap +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=10 ``` - + A `connect_timeout` setting of 0 means no timeout. @@ -94,8 +94,8 @@ A `connect_timeout` setting of 0 means no timeout. Another possible cause of connection timeouts is [Prisma's connection pool](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/), which has a default timeout of 10 seconds. This is typically enough time for Neon, but if you are still experiencing connection timeouts, you can try increasing this limit (in addition to the `connect_timeout` setting described above) by setting the `pool_timeout` parameter to a higher value. For example: -```text -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=15&pool_timeout=15` +```text wrap +DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=15&pool_timeout=15 ``` ## How to use Neon's serverless driver with Prisma (Preview) From ecdd36283720d73110a936a4d333711e9507760b Mon Sep 17 00:00:00 2001 From: ruheni Date: Mon, 30 Oct 2023 17:58:58 +0100 Subject: [PATCH 23/43] add section on differences to consider --- content/300-guides/050-database/890-neon.mdx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx index b348475c14..581d4dea91 100644 --- a/content/300-guides/050-database/890-neon.mdx +++ b/content/300-guides/050-database/890-neon.mdx @@ -29,6 +29,13 @@ Many aspects of using Prisma with Neon are just like using Prisma with any other - use [`prisma db push`](/concepts/components/prisma-migrate/db-push) to push changes in your schema to Neon - use [Prisma Client](/concepts/components/prisma-client) in your application to communicate with the database hosted by Neon +## Differences to consider + +While Neon is 100% compatible with PostgreSQL, there are a few differences you should be aware of the following when deciding to use Neon with Prisma: + +- **Neon's serverless model** — By default, Neon scales a compute zero after 5 minutes of inactivity. During this state, a compute instance is in _idle_ state. A characteristic of this feature is the concept of a "cold start". Activating a compute from an idle state takes from 500ms to a few seconds. Depending on how long it takes to connect to your database, your application may timeout. To learn more, see: [Connection latency and timeouts](https://neon.tech/docs/guides/prisma#connection-timeouts). +- **Neon's connection pooler** — Neon offers connection pooling using PgBouncer, enabling up to 10,1000 concurrent connections. To learn more, see: [Connection pooling](https://neon.tech/docs/connect/connection-pooling). + ## How to use Neon's connection pooling If you'd like to use the [connection pooling](https://neon.tech/blog/prisma-dx-improvements#providing-pooled-and-direct-connections-to-the-database) available in Neon, you will From e50dd74789300b3709915edf893b1194cd255e2a Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 23:53:58 +0100 Subject: [PATCH 24/43] chore: delete neon page from pr --- content/300-guides/050-database/890-neon.mdx | 159 ------------------- 1 file changed, 159 deletions(-) delete mode 100644 content/300-guides/050-database/890-neon.mdx diff --git a/content/300-guides/050-database/890-neon.mdx b/content/300-guides/050-database/890-neon.mdx deleted file mode 100644 index 581d4dea91..0000000000 --- a/content/300-guides/050-database/890-neon.mdx +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: 'Using Prisma with Neon' -metaTitle: 'Using Prisma with Neon' -metaDescription: 'Guide to using Prisma with Neon' -tocDepth: 2 -toc: true ---- - - - -This guide explains how to connect Prisma using Neon's connection pooling feature, and resolve [connection timeout](#connection-timeouts) issues. - - - -## What is Neon? - -[Neon](https://neon.tech/) is a fully managed serverless PostgreSQL with a generous free tier. Neon separates storage and compute, and offers modern developer features such as serverless, branching, bottomless storage, and more. Neon is open source and written in Rust. - -Learn more about Neon [here](https://neon.tech/docs). - -## Commonalities with other database providers - -Many aspects of using Prisma with Neon are just like using Prisma with any other relational database. You can still: - -- model your database with the [Prisma Schema Language](/concepts/components/prisma-schema) -- use Prisma's existing [`postgresql` database connector](/concepts/database-connectors/postgresql) in your schema, along with the [connection string Neon provides you](https://neon.tech/docs/connect/connect-from-any-app) -- use [Introspection](/concepts/components/introspection) for existing projects if you already have a database schema on Neon -- use [`prisma migrate dev`](/concepts/components/prisma-migrate/migrate-development-productoin) to track schema migrations in your Neon database -- use [`prisma db push`](/concepts/components/prisma-migrate/db-push) to push changes in your schema to Neon -- use [Prisma Client](/concepts/components/prisma-client) in your application to communicate with the database hosted by Neon - -## Differences to consider - -While Neon is 100% compatible with PostgreSQL, there are a few differences you should be aware of the following when deciding to use Neon with Prisma: - -- **Neon's serverless model** — By default, Neon scales a compute zero after 5 minutes of inactivity. During this state, a compute instance is in _idle_ state. A characteristic of this feature is the concept of a "cold start". Activating a compute from an idle state takes from 500ms to a few seconds. Depending on how long it takes to connect to your database, your application may timeout. To learn more, see: [Connection latency and timeouts](https://neon.tech/docs/guides/prisma#connection-timeouts). -- **Neon's connection pooler** — Neon offers connection pooling using PgBouncer, enabling up to 10,1000 concurrent connections. To learn more, see: [Connection pooling](https://neon.tech/docs/connect/connection-pooling). - -## How to use Neon's connection pooling - -If you'd like to use the [connection pooling](https://neon.tech/blog/prisma-dx-improvements#providing-pooled-and-direct-connections-to-the-database) available in Neon, you will -need to add `pgbouncer=true` to the end of the `DATABASE_URL` environment variable used in the `url` property of the `datasource` block of your Prisma schema: - -```env file=.env -# Connect to Neon with PgBouncer. -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech:5432/neondb?pgbouncer=true -``` - -If you would like to use the Prisma CLI in order to perform other actions on your database (e.g. migrations) you will need to add a `DIRECT_URL` environment variable to use in the `directUrl` property of the `datasource` block of your Prisma schema so that the CLI can use a direct connection string (without PgBouncer): - -```env file=.env highlight=4-5;add -# Connect to Neon with PgBouncer. -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417-pooler.us-east-2.aws.neon.tech/neondb?pgbouncer=true - -# Direct connection to the database. Used for migrations. -DIRECT_URL="postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb" -``` - -You can then update your `schema.prisma` to use the new direct URL: - -```prisma file=schema.prisma highlight=4;add -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") - directUrl = env("DIRECT_URL") -} -``` - -More information about the `directUrl` field can be found [here](/reference/api-reference/prisma-schema-reference#fields). - - - -We strongly recommend using the pooled connection string in your `DATABASE_URL` environment variable. You will gain the great developer experience of the Prisma CLI while also allowing for connections to be pooled regardless of deployment strategy. While this is not strictly necessary for every app, serverless solutions will inevitably require connection pooling. - - - -## Resolving connection timeouts - -A connection timeout that occurs when connecting from Prisma to Neon causes an error similar to the following: - -```text no-copy -Error: P1001: Can't reach database server at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432` -Please make sure your database server is running at `ep-white-thunder-826300.us-east-2.aws.neon.tech`:`5432`. -``` - -This error most likely means that the Prisma Query Engine timed out before the Neon compute was activated. - -A Neon compute has two main states: _Active_ and _Idle_. Active means that the compute is currently running. If there is no query activity for 5 minutes, Neon places a compute into an idle state by default. - -When you connect to an idle compute from Prisma, Neon automatically activates it. Activation typically happens within a few seconds but added latency can result in a connection timeout. To address this issue, your can adjust your Neon connection string by adding a `connect_timeout` parameter. This parameter defines the maximum number of seconds to wait for a new connection to be opened. The default value is 5 seconds. A higher setting should provide the time required to avoid connection timeout issues. For example: - -```text wrap -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=10 -``` - - - -A `connect_timeout` setting of 0 means no timeout. - - - -Another possible cause of connection timeouts is [Prisma's connection pool](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/), which has a default timeout of 10 seconds. This is typically enough time for Neon, but if you are still experiencing connection timeouts, you can try increasing this limit (in addition to the `connect_timeout` setting described above) by setting the `pool_timeout` parameter to a higher value. For example: - -```text wrap -DATABASE_URL=postgres://daniel:@ep-mute-rain-952417.us-east-2.aws.neon.tech/neondb?connect_timeout=15&pool_timeout=15 -``` - -## How to use Neon's serverless driver with Prisma (Preview) - -The [Neon serverless driver](https://github.com/neondatabase/serverless) is a low-latency Postgres driver for JavaScript and TypeScript that allows you to query data from serverless and edge environments over HTTP or WebSockets in place of TCP. Prisma by default uses TCP. - -You can use Prisma along with the Neon serverless driver using a [driver adapter](/concepts/components/drivers) . A driver adapter allows you to use a different database driver, from the default Prisma provides, to communicate with your database. - - - -This feature is available in Preview from Prisma versions 5.4.2 and later. - - - -To get started, enable the `driverAdapters` Preview feature flag: - -```prisma -generator client { - provider = "prisma-client-js" - previewFeatures = ["driverAdapters"] -} -``` - -Generate Prisma Client: - -```sh -npx prisma generate -``` - -Install the Prisma adapter for Neon, Neon serverless driver and `ws` packages: - -```sh -npm install @prisma/adapter-neon @neondatabase/serverless ws -``` - -Update your Prisma Client instance: - -```ts -import { Pool, neonConfig } from '@neondatabase/serverless' -import { PrismaNeon } from '@prisma/adapter-neon' -import { PrismaClient } from '@prisma/client' -import dotenv from 'dotenv' -import ws from 'ws' - -dotenv.config() -neonConfig.webSocketConstructor = ws -const connectionString = `${process.env.DATABASE_URL}` - -const pool = new Pool({ connectionString }) -const adapter = new PrismaNeon(pool) -const prisma = new PrismaClient({ adapter }) -``` - -You can then use Prisma Client as you normally would with full-type-safety. From 49207e4b33964ed29d7c75cabb65f2d97f394fa0 Mon Sep 17 00:00:00 2001 From: ruheni Date: Tue, 31 Oct 2023 23:57:13 +0100 Subject: [PATCH 25/43] chore: reorder content --- content/300-guides/050-database/900-turso.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index ce7f3d0054..9f97bd42ab 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -7,7 +7,7 @@ tocDepth: 3 -This guide discusses the concepts behind using Prisma and Turso, explains the commonalities and differences between Turso and other database providers, and leads you through the process for configuring your application to integrate with Turso. Turso can also be hosted on a remote server. +This guide discusses the concepts behind using Prisma and Turso, explains the commonalities and differences between Turso and other database providers, and leads you through the process for configuring your application to integrate with Turso. Prisma support for Turso is currently in [Early Access](/about/prisma/releases#early-access). We would appreciate your feedback in this [GitHub discussion](https://github.com/prisma/prisma/discussions/21345). @@ -15,7 +15,7 @@ Prisma support for Turso is currently in [Early Access](/about/prisma/releases#e ## What is Turso? -[Turso](https://turso.tech/) is an edge-hosted, distributed database that's based on [libSQL](https://turso.tech/libsql), an open-source and open-contribution fork of [SQLite](https://sqlite.org/), enabling you to bring data closer to your application and minimize query latency. +[Turso](https://turso.tech/) is an edge-hosted, distributed database that's based on [libSQL](https://turso.tech/libsql), an open-source and open-contribution fork of [SQLite](https://sqlite.org/), enabling you to bring data closer to your application and minimize query latency. Turso can also be hosted on a remote server. ## Commonalities with other database providers From 14c831cfc4971948235bac413827e907ad1fd50b Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 00:04:57 +0100 Subject: [PATCH 26/43] add turso's logo --- content/300-guides/050-database/900-turso.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index 9f97bd42ab..e3c3439bb7 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -15,6 +15,12 @@ Prisma support for Turso is currently in [Early Access](/about/prisma/releases#e ## What is Turso? +Turso's logo + [Turso](https://turso.tech/) is an edge-hosted, distributed database that's based on [libSQL](https://turso.tech/libsql), an open-source and open-contribution fork of [SQLite](https://sqlite.org/), enabling you to bring data closer to your application and minimize query latency. Turso can also be hosted on a remote server. ## Commonalities with other database providers From d7499e6d0ead67c10e58da1ab077ba6ef160d89d Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 00:08:50 +0100 Subject: [PATCH 27/43] chore: more modifications --- content/300-guides/050-database/900-turso.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index e3c3439bb7..b0f9d2052d 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -141,7 +141,7 @@ This workflow does not support tracking the history of applied migrations. ## How to connect and query from an embedded replica -Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. This is similar to having a local SQLite database. +Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. Embedded replicas behave similarly to a local SQLite database which makes your queries faster because your database is in the same location as your application. When your app initially establishes a connection to your database, the primary database will fulfill the query: From 0267e1969959537a911d4f256a1bfff4f442db50 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 00:09:22 +0100 Subject: [PATCH 28/43] reword --- content/300-guides/050-database/900-turso.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index b0f9d2052d..b29c9aa220 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -141,7 +141,7 @@ This workflow does not support tracking the history of applied migrations. ## How to connect and query from an embedded replica -Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. Embedded replicas behave similarly to a local SQLite database which makes your queries faster because your database is in the same location as your application. +Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. Embedded replicas behave similarly to a local SQLite database. An embedded replica makes your queries faster because your database is in the same location as your application. When your app initially establishes a connection to your database, the primary database will fulfill the query: From 23791dbd36d816b6fa426a550269814ac6093923 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 00:10:12 +0100 Subject: [PATCH 29/43] reword --- content/300-guides/050-database/900-turso.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index b29c9aa220..ffbb7ad586 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -141,7 +141,7 @@ This workflow does not support tracking the history of applied migrations. ## How to connect and query from an embedded replica -Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. Embedded replicas behave similarly to a local SQLite database. An embedded replica makes your queries faster because your database is in the same location as your application. +Turso supports [embedded replicas](https://blog.turso.tech/introducing-embedded-replicas-deploy-turso-anywhere-2085aa0dc242). Turso's embedded replicas enable you to have a copy of your primary, remote database _inside_ your application. Embedded replicas behave similarly to a local SQLite database. Database queries are faster because your database is inside your application. When your app initially establishes a connection to your database, the primary database will fulfill the query: From d98a22becf04821b7f8f867049e5fac1c241c3b9 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 00:15:47 +0100 Subject: [PATCH 30/43] reorder content --- content/300-guides/050-database/900-turso.mdx | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index ffbb7ad586..fe1d2be8d3 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -25,15 +25,7 @@ Prisma support for Turso is currently in [Early Access](/about/prisma/releases#e ## Commonalities with other database providers -Many aspects of using Prisma with Turso are just like using Prisma with any other relational database. You can still: - -- model your database with the [Prisma Schema Language](/concepts/components/prisma-schema) -- use Prisma's existing [`sqlite` database connector](/concepts/database-connectors/sqlite) in your schema -- use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Turso - -## Differences to consider - -libSQL is 100% compatible with SQLite. libSQL extends SQLite with the following features and capabilities: +libSQL is 100% compatible with SQLite. libSQL extends SQLite and adds the following features and capabilities: - Support for replication - Support for automated backups @@ -41,7 +33,15 @@ libSQL is 100% compatible with SQLite. libSQL extends SQLite with the following - Supports user-defined functions - Support for asynchronous I/O -To learn more about the differences between libSQL and how it is different from SQLite, see [libSQL Manifesto](https://turso.tech/libsql-manifesto). +> To learn more about the differences between libSQL and how it is different from SQLite, see [libSQL Manifesto](https://turso.tech/libsql-manifesto). + +Many aspects of using Prisma with Turso are just like using Prisma with any other relational database. You can still: + +- model your database with the [Prisma Schema Language](/concepts/components/prisma-schema) +- use Prisma's existing [`sqlite` database connector](/concepts/database-connectors/sqlite) in your schema +- use [Prisma Client](/concepts/components/prisma-client) in your application to talk to the database server at Turso + +## Differences to consider There are a number of differences between Turso and SQLite to consider. You should be aware of the following when deciding to use Turso and Prisma: From 37170ba428d9bcdcca376836bc151d7f39ee30f4 Mon Sep 17 00:00:00 2001 From: ruheni Date: Wed, 1 Nov 2023 15:27:03 +0100 Subject: [PATCH 31/43] update content --- content/300-guides/050-database/900-turso.mdx | 117 ++++++++++-------- 1 file changed, 68 insertions(+), 49 deletions(-) diff --git a/content/300-guides/050-database/900-turso.mdx b/content/300-guides/050-database/900-turso.mdx index fe1d2be8d3..27c279615b 100644 --- a/content/300-guides/050-database/900-turso.mdx +++ b/content/300-guides/050-database/900-turso.mdx @@ -23,6 +23,12 @@ Prisma support for Turso is currently in [Early Access](/about/prisma/releases#e [Turso](https://turso.tech/) is an edge-hosted, distributed database that's based on [libSQL](https://turso.tech/libsql), an open-source and open-contribution fork of [SQLite](https://sqlite.org/), enabling you to bring data closer to your application and minimize query latency. Turso can also be hosted on a remote server. + + +Support for Turso is available in [Early Access](/about/prisma/releases#early-access) from Prisma versions 5.4.2 and later. + + + ## Commonalities with other database providers libSQL is 100% compatible with SQLite. libSQL extends SQLite and adds the following features and capabilities: @@ -50,72 +56,85 @@ There are a number of differences between Turso and SQLite to consider. You shou ## Connect and query your primary database -1. Create a database on Turso if you don't have one already: +
- ```sh - turso db create turso-prisma-db - ``` +