Получение ошибки при подключении к локальной базе данных SQL Server к блокам данных через соединение JDBC

В основном я пытаюсь подключиться к базе данных SQL Server на моем локальном компьютере из блоков данных, используя соединение JDBC. Я следую процедуре, упомянутой в документации, как показано здесь на сайт Databricks.

Я использовал следующий код, упомянутый на сайте:

jdbcHostname = "localhost"
jdbcDatabase = "TestDB"
jdbcPort = "3306"

jdbcUrl = "jdbc:mysql://{0}:{1}/{2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
    "jdbcUsername" : "user1",
    "jdbcPassword" : "pass1",
    "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
     }

pushdown_query = "SELECT * FROM dbo.customer"
df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query,properties=connectionProperties)
display(df)

Но я получаю эту ошибку

IllegalArgumentException: требование не выполнено: драйвер не смог открыть соединение JDBC. Проверьте URL: jdbc: mysql: // localhost: 3306 / TestDB

Кто-нибудь может объяснить, почему это происходит? Как исправить эту ошибку?


person astroluv    schedule 28.06.2020    source источник


Ответы (1)


Обычно 3306 порт используется для баз данных mysql.

Попробуйте использовать порт 1433 для Sql server databases.

в URL-адресе jdbc используйте sqlserver вместо mysql jdbcUrl = "jdbc:sqlserver://{0}:{1};databaseName={2}"


Example Jdbc url:

jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks

person Shu    schedule 28.06.2020
comment
com.microsoft.sqlserver.jdbc.SQLServerException: номер порта 1433 / TestDB недействителен. - person astroluv; 28.06.2020
comment
Попробуйте с jdbc:sqlserver://localhost:1433;databaseName=TestDB - person Shu; 28.06.2020