Я работаю над приложением Java Spring Boot, и у меня возникла проблема с подключением к базе данных через JPA. JPA не может подключиться к моей базе данных. Я перепробовал множество конфигураций URL-адресов, но соединение не удалось, и появляется такое исключение:
java.lang.RuntimeException: Driver com.microsoft.sqlserver.jdbc.SQLServerDriver claims to not accept jdbcUrl
Я использую локальную базу данных Microsoft SQL Server. Вот моя конфигурация application.properties
spring.application.name=Two4H
server.port=8080
spring.datasource.url=jdbc:jtds:sqlserver://.\\MSSQLLocalDB\\Two4H;integratedSecurity=true;TrustServerCertificate=true
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
И это мое соединение с БД в IntelliJ, которое я хотел бы подключить к своему приложению:
«Успех» ярко-зелеными буквами очень противоречит утверждению «IntelliJ не может подключиться к моей базе данных». Это явно может. Вы, вероятно, имеете в виду, что ваше приложение Spring Boot не может этого сделать. URL-адрес JDBC в конфигурации IntelliJ сильно отличается от URL-адреса в файле application.properties.
Да, вы правы, мне следует быть точнее. IntelliJ может подключиться к этой базе данных, а JPA — нет. Раньше я пробовал разные URL-адреса (также такие же, как на вкладке подключения), но это не удалось. В консоли у меня есть это исключение: Драйвер com.microsoft.sqlserver.jdbc.SQLServerDriver утверждает, что не принимает jdbcUrl, jdbc:jtds:sqlserver://.\MSSQLLocalDB\Two4H;integratedSecurity=true;TrustServerCertificate=true
Можете ли вы попробовать использовать следующее свойство? spring.datasource.url=jdbc:sqlserver://(localdb)\\MSSQLLocalDB;database=Two4H;integratedSecurity=true;TrustServerCertificate=true
или spring.datasource.url=jdbc:jtds:sqlserver://(localdb)/MSSQLLocalDB;databaseName=Two4H;integratedSecurity=true;TrustServerCertificate=true
Я попробовал, но все еще есть проблемы с этим соединением. У меня есть это исключение на вкладке подключения: [08S01] Не удалось подключиться к хосту (localdb) с именем экземпляра mssqllocaldb. Ошибка: «java.net.UnknownHostException: (localdb)»
Для SQL-сервера URL-адрес и класс драйвера должны быть
spring.datasource.url=jdbc:sqlserver://MSSQLLocalDB:1433;database=Two4H;integratedSecurity=true;TrustServerCertificate=true
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
Я использую эти драйверы, но этот URL вызывает ошибку: [08S01] The TCP/IP connection to the host MSSQLLocalDB, port 1433 has failed.
Чтобы исправить эту ошибку, запустите диспетчер конфигурации SQL Server, на правой панели разверните сетевую конфигурацию SQL и нажмите «Протоколы». Убедитесь, что TCP/IP включен. Если он по-прежнему не работает, дважды щелкните по нему и перейдите на вкладку «IP-адреса». Измените все значения TCP-порта на 1433. Затем перейдите в Службы SQL на левой панели и перезапустите SQL-сервер.
Я исправил эту проблему. Сначала я использую диспетчер конфигурации SQL Server 2022, чтобы установить новый локальный SQL-сервер и настроить его протокол TCP/IP. Затем я просто меняю URL-адрес в файле application.properties Spring Boot на: spring.datasource.url=jdbc:sqlserver://localhost:1433;database=Two4H;integratedSecurity=true;TrustServerCertificate=true
. Вот хорошая статья, которую я нашел https://springframework.guru/configuring-spring-boot-for-microsoft-sql-server
Что вы подразумеваете под «не работает»? Что происходит ? Любая ошибка?