Search code examples
postgresqlprisma

prisma can't connect to postgresql


I've tried to connect Prisma with postgreSQL several times. prisma show this error message : "Error: undefined: invalid port number in "postgresql://postgres:password@localhost:5432/linker")".

-error enter image description here

-prisma/.env

DATABASE_URL=postgresql://postgres:password@localhost:5432/linker

-schema.prisma

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

So, first, I checked the port number to see if it was right and 5432 is right because I use the default port number. I also checked the postgresql.conf file, which is set to "listen_address="*"" , "port=5432".

enter image description here

And I went into pgAdmin4 and saw server's properties. the port number was 5432 as shown below image, and the username was set "postgres".

enter image description here

I don't know why prisma can't connect
Did i something missed?


Solution

  • Replace special characters with percent-encodings

    Make sure that in your DATABASE_URL in the .env file, the special characters in your username and password are replaced with percent-encodings.

    For example, in your database URL, if your username or password contains @ character, it should be replaced with its equivalent percent-encoding, that is %40. For # it is %23 and so on. See the list below.

    Percent-encodings

    Following are the percent-encodings for the frequently used special characters:

    Special Character Percent Encoding
    ! %21
    # %23
    $ %24
    % %25
    & %26
    ' %27
    ( %28
    ) %29
    * %2A
    + %2B
    , %2C
    / %2F
    : %3A
    ; %3B
    = %3D
    ? %3F
    @ %40
    [ %5B
    ] %5D
    newline %0A or %0D or %0D%0A
    space %20
    " %22
    % %25
    - %2D
    . %2E
    < %3C
    > %3E
    \ %5C
    ^ %5E
    _ %5F
    ` %60
    { %7B
    | %7C
    } %7D
    ~ %7E
    £ %C2%A3
    %E5%86%86