mysqldatabase-connectionconnection-stringhasura

MySQL Database connection error for hasura cloud


I am using hasura cloud environment. For MySQL database, I am using MySQL workbench and created a database. I want to use this database in hasura environment. MySQL server is up and running on the port 3306. My JDBC Connection string is: jdbc:mysql://localhost:3306/employees?user=admin&password=password@123 After connecting, I got this error

[
    {
        "definition": "employees",
        "message": {
            "stacktrace": "com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.\n\tat com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)\n\tat com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)\n\tat com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828)\n\tat com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:448)\n\tat com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)\n\tat com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)\n\tat io.agroal.pool.ConnectionFactory.createConnection(ConnectionFactory.java:226)\n\tat io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:536)\n\tat io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:517)\n\tat java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)\n\tat io.agroal.pool.util.PriorityScheduledExecutor.beforeExecute(PriorityScheduledExecutor.java:75)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)\n\tat java.base/java.lang.Thread.run(Thread.java:833)\nCaused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.\n\tat jdk.internal.reflect.GeneratedConstructorAccessor53.newInstance(Unknown Source)\n\tat java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)\n\tat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)\n\tat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)\n\tat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)\n\tat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)\n\tat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)\n\tat com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)\n\tat com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89)\n\tat com.mysql.cj.NativeSession.connect(NativeSession.java:120)\n\tat com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948)\n\tat com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818)\n\t... 11 more\nCaused by: java.net.ConnectException: Connection refused\n\tat java.base/sun.nio.ch.Net.connect0(Native Method)\n\tat java.base/sun.nio.ch.Net.connect(Net.java:579)\n\tat java.base/sun.nio.ch.Net.connect(Net.java:568)\n\tat java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:593)\n\tat java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)\n\tat java.base/java.net.Socket.connect(Socket.java:633)\n\tat com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153)\n\tat com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)\n\t... 14 more\n"
        },
        "name": "source employees",
        "reason": "Inconsistent object: Communications link failure\n\nThe last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.",
        "type": "source"
    }
]

does using a local SQL database for cloud environment is allowed? Or should we have to use MySQL database from cloud. I have a small doubt. Is there any problem with password as it includes @ symbol!


Solution

  • localhost on Hasura Cloud would point to the local network of the container running inside of Hasura Cloud infrastructure

    Since your MySQL database is not running alongside the Hasura Cloud engine instance, you need to give Hasura the address to your database as seen from inside of the Cloud network.

    That would be the external IP address or domain name.