mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-10 07:25:50 +01:00
Experimental support for MySQL is available!
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
db {
|
||||
driver = "org.h2.Driver"
|
||||
url = "jdbc:h2:${DatabaseHome};MVCC=true"
|
||||
user = "sa"
|
||||
password = "sa"
|
||||
|
||||
5
src/main/resources/database_mysql.conf
Normal file
5
src/main/resources/database_mysql.conf
Normal file
@@ -0,0 +1,5 @@
|
||||
db {
|
||||
url = "jdbc:mysql://192.168.99.100/gitbucket"
|
||||
user = "root"
|
||||
password = "root"
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package gitbucket.core.model
|
||||
|
||||
import gitbucket.core.util.DatabaseConfig
|
||||
|
||||
|
||||
trait Profile {
|
||||
val profile: slick.driver.JdbcProfile
|
||||
import profile.simple._
|
||||
@@ -31,15 +30,7 @@ trait Profile {
|
||||
|
||||
trait ProfileProvider { self: Profile =>
|
||||
|
||||
private lazy val url = DatabaseConfig.url
|
||||
|
||||
lazy val profile = if(url.indexOf("h2") >= 0){
|
||||
slick.driver.H2Driver
|
||||
} else if(url.indexOf("mysql") >= 0) {
|
||||
slick.driver.MySQLDriver
|
||||
} else {
|
||||
throw new ExceptionInInitializerError(s"${url} is not unsupported.")
|
||||
}
|
||||
lazy val profile = DatabaseConfig.slickDriver
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -7,11 +7,11 @@ import com.typesafe.config.ConfigFactory
|
||||
import gitbucket.core.GitBucketCoreModule
|
||||
import gitbucket.core.plugin.PluginRegistry
|
||||
import gitbucket.core.service.{ActivityService, SystemSettingsService}
|
||||
import gitbucket.core.util.DatabaseConfig
|
||||
import gitbucket.core.util.Directory._
|
||||
import gitbucket.core.util.JDBCUtil._
|
||||
import io.github.gitbucket.solidbase.Solidbase
|
||||
import io.github.gitbucket.solidbase.manager.JDBCVersionManager
|
||||
import liquibase.database.core.H2Database
|
||||
import javax.servlet.{ServletContextListener, ServletContextEvent}
|
||||
import org.apache.commons.io.FileUtils
|
||||
import org.slf4j.LoggerFactory
|
||||
@@ -41,7 +41,7 @@ class InitializeListener extends ServletContextListener with SystemSettingsServi
|
||||
|
||||
if(versionFile.exists()){
|
||||
val version = FileUtils.readFileToString(versionFile, "UTF-8")
|
||||
if(version == "3.11"){
|
||||
if(version == "3.13"){
|
||||
// Initialization for GitBucket 3.10
|
||||
logger.info("Migration to GitBucket 4.x start")
|
||||
|
||||
@@ -62,14 +62,14 @@ class InitializeListener extends ServletContextListener with SystemSettingsServi
|
||||
logger.info("Migration to GitBucket 4.x completed")
|
||||
|
||||
} else {
|
||||
throw new Exception("GitBucket can't migrate from this version. Please update to 3.11 at first.")
|
||||
throw new Exception("GitBucket can't migrate from this version. Please update to 3.13 at first.")
|
||||
}
|
||||
}
|
||||
|
||||
// Run normal migration
|
||||
logger.info("Start schema update")
|
||||
val solidbase = new Solidbase()
|
||||
solidbase.migrate(conn, Thread.currentThread.getContextClassLoader, new H2Database(), GitBucketCoreModule)
|
||||
solidbase.migrate(conn, Thread.currentThread.getContextClassLoader, DatabaseConfig.liquiDriver, GitBucketCoreModule)
|
||||
|
||||
// Load plugins
|
||||
logger.info("Initialize plugins")
|
||||
|
||||
@@ -48,7 +48,7 @@ object Database {
|
||||
|
||||
private val dataSource: HikariDataSource = {
|
||||
val config = new HikariConfig()
|
||||
config.setDriverClassName(DatabaseConfig.driver)
|
||||
config.setDriverClassName(DatabaseConfig.jdbcDriver)
|
||||
config.setJdbcUrl(DatabaseConfig.url)
|
||||
config.setUsername(DatabaseConfig.user)
|
||||
config.setPassword(DatabaseConfig.password)
|
||||
|
||||
@@ -2,18 +2,53 @@ package gitbucket.core.util
|
||||
|
||||
import com.typesafe.config.ConfigFactory
|
||||
import Directory.DatabaseHome
|
||||
import liquibase.database.AbstractJdbcDatabase
|
||||
import liquibase.database.core.{MySQLDatabase, H2Database}
|
||||
|
||||
object DatabaseConfig {
|
||||
|
||||
private val config = ConfigFactory.load("database")
|
||||
private val dbUrl = config.getString("db.url")
|
||||
private lazy val config = ConfigFactory.load("database")
|
||||
private lazy val dbUrl = config.getString("db.url")
|
||||
|
||||
def url(directory: Option[String]): String =
|
||||
dbUrl.replace("${DatabaseHome}", directory.getOrElse(DatabaseHome))
|
||||
|
||||
val url: String = url(None)
|
||||
val user: String = config.getString("db.user")
|
||||
val password: String = config.getString("db.password")
|
||||
val driver: String = config.getString("db.driver")
|
||||
lazy val url: String = url(None)
|
||||
lazy val user: String = config.getString("db.user")
|
||||
lazy val password: String = config.getString("db.password")
|
||||
lazy val jdbcDriver: String = DatabaseType(url).jdbcDriver
|
||||
lazy val slickDriver: slick.driver.JdbcProfile = DatabaseType(url).slickDriver
|
||||
lazy val liquiDriver: AbstractJdbcDatabase = DatabaseType(url).liquiDriver
|
||||
|
||||
}
|
||||
|
||||
sealed trait DatabaseType {
|
||||
val jdbcDriver: String
|
||||
val slickDriver: slick.driver.JdbcProfile
|
||||
val liquiDriver: AbstractJdbcDatabase
|
||||
}
|
||||
|
||||
object DatabaseType {
|
||||
|
||||
def apply(url: String): DatabaseType = {
|
||||
if(url.indexOf("h2") >= 0){
|
||||
H2
|
||||
} else if(url.indexOf("mysql") >= 0){
|
||||
MySQL
|
||||
} else {
|
||||
throw new IllegalArgumentException(s"${url} is not supported.")
|
||||
}
|
||||
}
|
||||
|
||||
object H2 extends DatabaseType {
|
||||
val jdbcDriver = "org.h2.Driver"
|
||||
val slickDriver = slick.driver.H2Driver
|
||||
val liquiDriver = new H2Database()
|
||||
}
|
||||
|
||||
object MySQL extends DatabaseType {
|
||||
val jdbcDriver = "com.mysql.jdbc.Driver"
|
||||
val slickDriver = slick.driver.MySQLDriver
|
||||
val liquiDriver = new MySQLDatabase()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user