遇到的错误是:
Database connection failed: Unable to obtain connection from database (jdbc:sqlserver://localhost;databaseName=mydb;encrypt=false;integratedSecurity=true;trustServerCertificate=true) for user 'null': "encrypt" property is set to "false" and "trustServerCertificate" property is set to "true" but the driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption: Error: The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]. ClientConnectionId:...
简单来说, 就是: 连接sqlserver使用了SSL加密, server选择了TLS 1.0协议, 但客户端默认使用TLS 1.2, 1.3协议
解决方案无非2个: 更改server, 改用客户端可接受的协议;更改客户端, 选用server可接受的协议。
升级server影响较大,如果你的SQL SERVER 2008 R2是SP3, 那么可以参考这篇文章。否则, 建议从客户端方面解决。
Flyway使用JAVA的JBDC进行数据库连接,因此为了允许Flyway客户端与TLSV1.0连接,我们需要在JAVA设置中重新启用TLS 1.0。
通常,这些设置在“java.security”文件中通过"jdk.tls.disabledAlgorithms"属性进行控制,但flyway使用其自己的本地安装的JRE及其自己的配置,因此我们必须修改该JRE的安全设置,而不是您的标准JRE。Flyways JRE可以在您的Flyway安装目录中找到:
"C:\Program Files\Red Gate\Flyway Desktop\flyway\jre\conf\security\java.security"
解决方案:找到文件中的"jdk.tls.disabledAlgorithms", 删除"TLSv1"。
浙公网安备 33010602011771号