diff --git a/build.sbt b/build.sbt index cf76f80..fdabb76 100644 --- a/build.sbt +++ b/build.sbt @@ -46,7 +46,7 @@ "com.github.takezoe" %% "blocking-slick-32" % "0.0.12" cross CrossVersion.for3Use2_13, "com.novell.ldap" % "jldap" % "2009-10-07", "com.h2database" % "h2" % "1.4.199", - "org.mariadb.jdbc" % "mariadb-java-client" % "2.7.5", + "org.mariadb.jdbc" % "mariadb-java-client" % "3.0.4", "org.postgresql" % "postgresql" % "42.3.5", "ch.qos.logback" % "logback-classic" % "1.2.11", "com.zaxxer" % "HikariCP" % "4.0.3" exclude ("org.slf4j", "slf4j-api"), diff --git a/src/main/scala/gitbucket/core/util/DatabaseConfig.scala b/src/main/scala/gitbucket/core/util/DatabaseConfig.scala index e80d3ef..75420d0 100644 --- a/src/main/scala/gitbucket/core/util/DatabaseConfig.scala +++ b/src/main/scala/gitbucket/core/util/DatabaseConfig.scala @@ -38,8 +38,18 @@ private lazy val dbUrl = getValue("db.url", config.getString) //config.getString("db.url") - def url(directory: Option[String]): String = - dbUrl.replace("${DatabaseHome}", directory.getOrElse(DatabaseHome)) + def url(directory: Option[String]): String = { + val sb = new StringBuilder() + sb.append(dbUrl) + if (dbUrl.startsWith("jdbc:mysql:") && dbUrl.indexOf("permitMysqlScheme") == -1) { + if (dbUrl.indexOf("?") == -1) { + sb.append("?permitMysqlScheme") + } else { + sb.append("&permitMysqlScheme") + } + } + sb.toString().replace("${DatabaseHome}", directory.getOrElse(DatabaseHome)) + } lazy val url: String = url(None) lazy val user: String = getValue("db.user", config.getString) diff --git a/src/test/scala/gitbucket/core/GitBucketCoreModuleSpec.scala b/src/test/scala/gitbucket/core/GitBucketCoreModuleSpec.scala index eba373d..39704e4 100644 --- a/src/test/scala/gitbucket/core/GitBucketCoreModuleSpec.scala +++ b/src/test/scala/gitbucket/core/GitBucketCoreModuleSpec.scala @@ -31,6 +31,7 @@ val container = new MySQLContainer() { override val container = new org.testcontainers.containers.MySQLContainer(s"mysql:$tag") { override def getDriverClassName = "org.mariadb.jdbc.Driver" + override def getJdbcUrl: String = super.getJdbcUrl + "?permitMysqlScheme" } // TODO https://jira.mariadb.org/browse/CONJ-663 container.withCommand("mysqld --default-authentication-plugin=mysql_native_password") @@ -38,7 +39,11 @@ container.start() try { new Solidbase().migrate( - DriverManager.getConnection(s"${container.jdbcUrl}?useSSL=false", container.username, container.password), + DriverManager.getConnection( + container.jdbcUrl, + container.username, + container.password + ), Thread.currentThread().getContextClassLoader(), new MySQLDatabase(), new Module(GitBucketCoreModule.getModuleId, GitBucketCoreModule.getVersions)