Skip to content

DOC

Setup base de données Neon

Créer et configurer une base PostgreSQL serverless avec Neon et neonctl CLI.

Setup base de données Neon

Contexte

Neon est une base PostgreSQL serverless entièrement managée. Le CLI neonctl permet de créer des branches de DB, gérer les connexions, et exporter les connection strings. Idéal pour un workflow de développement avec environnements séparés (dev/staging/prod).

Prérequis

  • Compte Neon actif (gratuit)
  • neonctl CLI installée : npm i -g neonctl
  • Authentication Neon : neonctl auth

Étapes

1. Installer neonctl

npm i -g neonctl
neonctl auth

Suit les prompts de connexion au navigateur.

2. Créer un projet Neon (optionnel)

Généralement fait via le dashboard, mais possible via CLI :

neonctl projects create --name my-app-db

3. Lister les branches existantes

neonctl branches list

# Output:
# Branch    ID    Current    Region
# main      xxxx  yes        us-east-1

4. Créer une branche de développement

neonctl branches create --name dev

# Output:
# Successfully created branch dev

5. Récupérer la connection string

neonctl connection-string --branch dev

# Output:
# postgresql://user:password@project-dev.neon.tech:5432/dbname

Ajouter cette string dans .env.local :

DATABASE_URL=postgresql://user:password@project-dev.neon.tech:5432/dbname

6. Vérifier la connexion

Avec un ORM (Prisma) :

npx prisma db push --skip-generate
# ✓ Schema pushed to dev branch

Ou via psql :

psql postgresql://user:password@project-dev.neon.tech:5432/dbname

# Si psql absent:
# brew install postgresql (macOS)
# apt install postgresql-client (Linux)

Workflow multi-environnements

Dev branch

neonctl branches create --name dev
neonctl connection-string --branch dev > .env.dev

Staging branch

neonctl branches create --name staging
neonctl connection-string --branch staging > .env.staging

Production (main)

# Utiliser directement la branche 'main' existante
neonctl connection-string --branch main > .env.prod

Migrações avec Prisma

# Push schema local sur dev
npx prisma db push --skip-generate

# Créer une migration
npx prisma migrate dev --name add_dashboard_table

# Pusher en prod
DATABASE_URL=<prod-url> npx prisma migrate deploy

Exemple complet

# 1. Create dev branch
neonctl branches create --name dev

# 2. Get connection string
DEV_URL=$(neonctl connection-string --branch dev)

# 3. Add to .env.local
echo "DATABASE_URL=$DEV_URL" >> .env.local

# 4. Push schema
npx prisma db push

# 5. Verify
psql $DEV_URL -c "SELECT version();"

Suppression de branches

neonctl branches delete --name dev

# Verification
neonctl branches list

Commandes courantes

neonctl branches list              # Lister toutes les branches
neonctl branches create --name X   # Créer branche X
neonctl branches delete --name X   # Supprimer branche X
neonctl connection-string          # String pour la branche courante
neonctl connection-string --branch X  # String pour branche X

Troubleshooting

SymptômeCause probableRésolution
Connection refusedBranche n’existe pasVérifier avec neonctl branches list
Auth expiredToken expiréneonctl auth pour reconnecter
Migrations échouentRestrictions NeonVérifier les quotas gratuit

Variantes

  • Auto-branching : Vercel + Neon = branche DB par preview
  • Point-in-time restore : Récupérer un backup d’une date spécifique
  • Pooling : Neon inclut un connection pooler gratuit

Voir aussi

  • 30-vercel-deploy.md — Déployer avec Vercel
  • 28-task-runner-feature.md — Implémenter features avec DB