TestContainers和Mysql:对用户“ @'172.17.0.1”的访问被拒绝使用密码:否

问题描述

我写了一个简单的存储库来测试Kotlin Exposed with TestContainers。我使用的数据库MysqL

这是我的代码

class StudentsRepositoryTest: ShouldSpec({
     val container = getMysqLContainer()
     val mysqljdbcUrl = container.jdbcUrl

     beforeSpec {
        Database.connect(mysqljdbcUrl,"com.MysqL.cj.jdbc.Driver")
        transaction {
            SchemaUtils.create(Students)
        }
     }

     ... // some tests


     private fun getMysqLContainer(): MysqLContainer<nothing> {
       return MysqLContainer<nothing>("MysqL:5.7").apply {
          withUsername("root")
          withPassword("")
          withEnv("MysqL_ROOT_PASSWORD","%")
          withDatabaseName("test")
          start()
      }
}
 

代码beforeSpec

处失败
Access denied for user ''@'172.17.0.1' (using password: NO)

也许我错过了一些东西,将不胜感激

我使用的库:

  • kotest
  • kotest-extension-testcontainers
  • 测试容器
  • testcontainers-MysqL

解决方法

我终于找到了我问题的答案。原因是我忘记将用户名和密码传递给与Exposed库的连接。

val mysqlJdbcUrl = container.jdbcUrl
val username = container.username
val password = container.password
Database.connect(mysqlJdbcUrl,"com.mysql.cj.jdbc.Driver",username,password)