Katılım
21 Aralık 2023
Mesajlar
1.970
Makaleler
24
Çözümler
54
Beğeniler
2.598
Evet, böyle bir sorun ile karşılaştım. Production ve development değerlerini .env ve .env.development üzerinde tutuyorum. Fakat NextJS kolaylıkla bunun development mi, production ortamı olduğunu anlamasına ragmen, Prisma algılamıyor. Her defasında migration/generate yaptığımda production veritabanina bağlanıyor.
dotenv-cli ile dokumanda denilen yöntemi yaptığımda ise,
Kod:
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database

Error: P1013: The provided database string is invalid. invalid port number in database URL. Please refer to the
 documentation in https://www.prisma.io/docs/reference/database-reference/connection-urls for constructing a co
rrect connection string. In some cases, certain characters must be escaped. Please check the string for any ill
egal characters.
Boyle cikti alıyorum.

1. Drizzzle önermeyin, projeyi komple taşımaktan nefret ediyorum ve deploy ile yeniden uğraşmak istemiyorum.
2. Saf SQL de önermeyin, küçük bir proje için SQL ile uğraşacak sabır yok bende.

Ben bu Prisma'yi nasıl .env.development ile calistirabilirim?
 
Son düzenleme:
Veritabanı bağlantı URL hatası almışsınız. Hedef gösterdiğiniz dotenv dosyasının içeriğini paylaşabilir misiniz? Yoksa production'a bağlanmaya çalıştığı için mi böyle?

JSON:
{
  "scripts": {
    "dev:migrate": "dotenv -e .env.development -- npx prisma migrate dev",
    "dev:generate": "dotenv -e .env.development -- npx prisma generate",
    "prod:migrate": "dotenv -e .env -- npx prisma migrate deploy",
    "prod:generate": "dotenv -e .env -- npx prisma generate"
  }
}

Bu tarz bir package.json scripts kısmı ile deneme yaptınız mı?
 
@Yonga attigin yöntemi denedim, ise yaramiyor. Her turlu .env yükleniyor. .env.development değil.

Test environment URL'leri boyle:
Kod:
POSTGRES_URL="postgres://postgres:localhost:5432/testdb"
POSTGRES_PRISMA_URL="postgres://default:localhost:5432/testdb"
POSTGRES_URL_NO_SSL="postgres://default:localhost:5432/testdb"
POSTGRES_URL_NON_POOLING="postgres://default:localhost:5432/testdb"
POSTGRES_USER="postgres"
POSTGRES_HOST="localhost"
POSTGRES_PASSWORD="ilovelinux"
POSTGRES_DATABASE="testdb"
 
dotenv-cli ile dokumanda denilen yöntemi yaptığımda ise,
Kod:
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database

Error: P1013: The provided database string is invalid. invalid port number in database URL. Please refer to the
documentation in https://www.prisma.io/docs/reference/database-reference/connection-urls for constructing a co
rrect connection string. In some cases, certain characters must be escaped. Please check the string for any ill
egal characters.
Boyle cikti alıyorum.

İlk satırdaki Environment variables loaded from .env mesajı aslında işlerin yanlış gittiğine işaret etmiyormuş. dotenv, ortam değişkenlerini sağladığınız dosyadan yüklüyormuş ve sonra Prisma gerçekten .env dosyasını okuyormuş ve tanımlanmamış değişkenleri yüklüyormuş. Eğer sağlanan dosyadaki bir değişken .env'de de tanımlıysa Prisma, o değişkenin değerinin üzerine .env'deki değeri yazmıyormuş.

Şuradaki mesajları özetlemeye çalıştım: Prisma doesn't load different .env even with `dotenv-cli` · prisma prisma · Discussion #13173

Peki neden böyle bir hata alıyorsunuz? .env.development'taki URL formatında yanlışlık var gibi gözüküyor:

Test environment URL'leri boyle:
Kod:
POSTGRES_URL="postgres://postgres:localhost:5432/testdb"
POSTGRES_PRISMA_URL="postgres://default:localhost:5432/testdb"
POSTGRES_URL_NO_SSL="postgres://default:localhost:5432/testdb"
POSTGRES_URL_NON_POOLING="postgres://default:localhost:5432/testdb"
POSTGRES_USER="postgres"
POSTGRES_HOST="localhost"
POSTGRES_PASSWORD="ilovelinux"
POSTGRES_DATABASE="testdb"

Kullanıcı adından sonra : değil @ gelmeli sanırsam. Hata mesajında da bununla ilgili Prisma'dan bağlantı verilmiş.