Describe the bug
I want to connect a local Prisma server to a local postgres database with an existing schema (outside of docker). I use Prisma CLI version 1.10 but it doesn't work. I'm using Ubuntu.
To Reproduce
Steps to reproduce the behavior:
***@dell:~/Proyectos/PRISMA$ prisma init server4
? Set up a new Prisma server or deploy to an existing server? Use existing database
? What kind of database do you want to deploy to? PostgreSQL
? Does your database contain existing data? Yes
? Enter database host localhost
? Enter database port 5432
? Enter database user ******
? Enter database password ******
? Enter name of existing database ******
? Use SSL? No
? Enter name of existing schema ******
Introspecting database 60ms
Created datamodel definition based on 1 database tables.
Created 3 new files:
prisma.yml Prisma service definition
datamodel.graphql GraphQL SDL-based datamodel (foundation for database)
docker-compose.yml Docker configuration file
Next steps:
1. Open folder: cd server4
2. Start your Prisma server: docker-compose up -d
3. Deploy your Prisma service: prisma deploy
4. Read more about introspection:
http://bit.ly/prisma-introspection
***@dell:~/Proyectos/PRISMA$ cd server4
***@dell:~/Proyectos/PRISMA/server4$ docker-compose up -d
Recreating server4_prisma_1 ... done
***@dell:~/Proyectos/PRISMA/server4$ prisma deploy
▸ Could not connect to server at http://localhost:4466. Please check if your server is running.
Get in touch if you need help: https://www.prisma.io/forum/
To get more detailed output, run $ export DEBUG="*"
***@dell:~/Proyectos/PRISMA/server4$
Thanks for you help.
Can you share the server logs? docker logs -f <prisma container id
.
`Jun 26, 2018 1:27:18 PM org.postgresql.Driver connect
SEVERE: Connection error:
org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:245)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.
at org.postgresql.Driver.makeConnection(Driver.java:452)
at org.postgresql.Driver.connect(Driver.java:254)
at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430)
at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64)
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570)
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:156)
... 15 more
Jun 26, 2018 1:27:18 PM org.postgresql.core.v3.ConnectionFactoryImpl log
WARNING: ConnectException occurred while connecting to localhost:5432
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:156)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.
at org.postgresql.Driver.makeConnection(Driver.java:452)
at org.postgresql.Driver.connect(Driver.java:254)
at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430)
at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64)
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570)
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563)
`
@maginkgo Maybe you wanna try this: https://github.com/prismagraphql/prisma/issues/2675#issuecomment-400326500
Im getting this error too. But above mentioned feed does not help. Anyone figured this out yet?
Use host.docker.internal instead localhost:
...
databases:
default:
connector: postgres
host: host.docker.internal
port: '5432'
database: db
schema: public
user: postgres
password: root
migrations: false
@truesik You're awesome! That worked! Thanks!
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
@truesik i tried using host.docker.internal but got this from the logs:
Oct 24, 2018 3:30:50 PM org.postgresql.core.v3.ConnectionFactoryImpl log
WARNING: IOException occurred while connecting to host.docker.internal:5433
java.net.UnknownHostException: host.docker.internal
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:156)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.
at org.postgresql.Driver.makeConnection(Driver.java:452)
at org.postgresql.Driver.connect(Driver.java:254)
at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101)
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341)
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193)
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430)
at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64)
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570)
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Now i get it! host.docker.internal is not yet available for LINUX :(
I have the same issue when using the default setup referenced by prisma (using postgres connector) but when using mysql it works fine
My machine is linux mint (ubuntu)
the docker-compose logs
prisma_1_9c27259b8894 | Nov 19, 2018 11:17:18 PM org.postgresql.Driver connect
prisma_1_9c27259b8894 | SEVERE: Connection error:
prisma_1_9c27259b8894 | org.postgresql.util.PSQLException: FATAL: role "root" does not exist
prisma_1_9c27259b8894 | at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2433)
prisma_1_9c27259b8894 | at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2566)
prisma_1_9c27259b8894 | at org.postgresql.core.v3.QueryExecutorImpl.
prisma_1_9c27259b8894 | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:210)
prisma_1_9c27259b8894 | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
prisma_1_9c27259b8894 | at org.postgresql.jdbc.PgConnection.
prisma_1_9c27259b8894 | at org.postgresql.Driver.makeConnection(Driver.java:452)
prisma_1_9c27259b8894 | at org.postgresql.Driver.connect(Driver.java:254)
prisma_1_9c27259b8894 | at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563)
prisma_1_9c27259b8894 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
prisma_1_9c27259b8894 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
prisma_1_9c27259b8894 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
prisma_1_9c27259b8894 | at java.lang.Thread.run(Thread.java:748)
prisma_1_9c27259b8894 |
prisma_1_9c27259b8894 | Exception in thread "main" java.sql.SQLTransientConnectionException: database - Connection is not available, request timed out after 5000ms.
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:548)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:145)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:83)
prisma_1_9c27259b8894 | at slick.jdbc.hikaricp.HikariCPJdbcDataSource.createConnection(HikariCPJdbcDataSource.scala:14)
prisma_1_9c27259b8894 | at slick.jdbc.JdbcBackend$BaseSession.
prisma_1_9c27259b8894 | at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:46)
prisma_1_9c27259b8894 | at slick.jdbc.JdbcBackend$DatabaseDef.createSession(JdbcBackend.scala:37)
prisma_1_9c27259b8894 | at slick.basic.BasicBackend$DatabaseDef.acquireSession(BasicBackend.scala:249)
prisma_1_9c27259b8894 | at slick.basic.BasicBackend$DatabaseDef.acquireSession$(BasicBackend.scala:248)
prisma_1_9c27259b8894 | at slick.jdbc.JdbcBackend$DatabaseDef.acquireSession(JdbcBackend.scala:37)
prisma_1_9c27259b8894 | at slick.basic.BasicBackend$DatabaseDef$$anon$2.run(BasicBackend.scala:274)
prisma_1_9c27259b8894 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
prisma_1_9c27259b8894 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
prisma_1_9c27259b8894 | at java.lang.Thread.run(Thread.java:748)
prisma_1_9c27259b8894 | Caused by: org.postgresql.util.PSQLException: FATAL: role "root" does not exist
prisma_1_9c27259b8894 | at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2433)
prisma_1_9c27259b8894 | at org.postgresql.core.v3.QueryExecutorImpl.readStartupMessages(QueryExecutorImpl.java:2566)
prisma_1_9c27259b8894 | at org.postgresql.core.v3.QueryExecutorImpl.
prisma_1_9c27259b8894 | at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:210)
prisma_1_9c27259b8894 | at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
prisma_1_9c27259b8894 | at org.postgresql.jdbc.PgConnection.
prisma_1_9c27259b8894 | at org.postgresql.Driver.makeConnection(Driver.java:452)
prisma_1_9c27259b8894 | at org.postgresql.Driver.connect(Driver.java:254)
prisma_1_9c27259b8894 | at slick.jdbc.DriverDataSource.getConnection(DriverDataSource.scala:101)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:341)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:193)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:430)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool.access$500(HikariPool.java:64)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:570)
prisma_1_9c27259b8894 | at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:563)
prisma_1_9c27259b8894 | at java.util.concurrent.FutureTask.run(FutureTask.java:266)
the .yml
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.14
restart: always
ports:
- "4466:4466"
environment:
PRISMA_CONFIG: |
managementApiSecret: my-server-secret-123
port: 4466
databases:
default:
connector: postgres
host: postgres
port: 5432
user: root
password: prisma
migrations: true
managementSchema: management
database: root
postgres:
image: postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: prisma
volumes:
- postgres:/var/lib/postgresql/data
volumes:
postgres:
@marktani @abdelrahman-mustafa This works for me when connecting to database running on localhost:
version: '3'
services:
prisma:
image: prismagraphql/prisma:1.22
restart: always
network_mode: "host"
ports:
- "4466:4466"
environment:
PRISMA_CONFIG: |
port: 4466
# uncomment the next line and provide the env var PRISMA_MANAGEMENT_API_SECRET=my-secret to activate cluster security
# managementApiSecret: my-secret
databases:
default:
connector: postgres
host: __YOUR_POSTGRES_HOST__
database: __YOUR_POSTGRES_DB__
schema: __YOUR_POSTGRES_SCHEMA__
user: __YOUR_POSTGRES_USER__
password: __YOUR_POSTGRES_PASSWORD__
rawAccess: true
port: '5432'
migrations: false
Note: I added network_mode: "host"
after restart: always
@Musbell Thank you, adding network_mode: host
to the prisma container worked! 👍
(Running Docker on Ubuntu)
@Musbell 's solution worked for me as well. On Ubuntu. Thanks!
I am still facing the issue the solutions did not worked for me on ubuntu 18.
environment:
PRISMA_CONFIG: |
port: 4466
databases:
default:
connector: mysql
host: host.docker.internal
schema: graph
user: graph
password: graph
rawAccess: true
port: '3306'
migrations: true
Logs
Exception in thread "main" java.lang.RuntimeException: Unable to load Prisma config: com.prisma.config.InvalidConfiguratio
n: Only Postgres connectors specify a schema. If they do they also need to specify a database. Other connectors only speci
fy a database.
at scala.sys.package$.error(package.scala:26)
at com.prisma.config.ConfigLoader$.load(ConfigLoader.scala:40)
at com.prisma.local.PrismaLocalDependencies.<init>(PrismaLocalDependencies.scala:48)
at com.prisma.local.PrismaLocalMain$.delayedEndpoint$com$prisma$local$PrismaLocalMain$1(PrismaLocalMain.scala:13)
at com.prisma.local.PrismaLocalMain$delayedInit$body.apply(PrismaLocalMain.scala:8)
at scala.Function0.apply$mcV$sp(Function0.scala:34)
at scala.Function0.apply$mcV$sp$(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App.$anonfun$main$1$adapted(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:388)
at scala.App.main(App.scala:76)
at scala.App.main$(App.scala:74)
at com.prisma.local.PrismaLocalMain$.main(PrismaLocalMain.scala:8)
at com.prisma.local.PrismaLocalMain.main(PrismaLocalMain.scala)
Exception in thread "main" java.lang.RuntimeException: Unable to load Prisma config: com.prisma.config.InvalidConfiguration: Only Postgres connectors specify a schema. If they do they also need to specify a database. Other connectors only specify a database.
Some update ?
Most helpful comment
Use host.docker.internal instead localhost: