尝试连接docker mysql时,ResourcePool无法从其主工厂获取资源或源错误

时间:2018-05-30 09:01:47

标签: java mysql hibernate docker orm

我正在尝试将docker mysql与hibernate应用程序一起使用。 我的db.properties是:

on compress(put(a.ID,8.)) = compress(put(b.ID,8.));

使用 docker container ip(172.17.0.2)

我的hibernate配置是:

  

hibernate.connection.username=root
hibernate.connection.password=pass
hibernate.hbm2ddl.auto=update
hibernate.connection.url=jdbc:mysql://172.17.0.2:3306/keystone?autoReconnect=true
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

我可以使用任何客户端访问docker mysql 但是当我尝试从我的应用程序连接时,我收到此错误:

    <property name="show_sql">false</property>
    <property name="format_sql">true</property>
    <property name="use_sql_comments">false</property>
    <property name="generate_statistics">false</property>
    <property name="max_fetch_depth">2</property>
    <property name="default_batch_fetch_size">16</property>
    <property name="use_streams_for_binary">true</property>
    <property name="connection.isolation">2</property>
    <property name="hibernate.transaction.flush_before_completion">true</property>
    <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>

    <property name="hibernate.c3p0.min_size">2</property>
    <property name="hibernate.c3p0.max_size">20</property>
    <property name="hibernate.c3p0.timeout">300</property>
    <property name="hibernate.c3p0.max_statements">300</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>
    <property name="hibernate.cache.use_structured_entries">true</property>
    <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

</session-factory>

Hibernate无法从mysql连接池获得连接。不知道为什么。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我找到了这个问题的解决方案。我使用了以下命令。

  

sudo docker run --name keystone -e MYSQL_ROOT_PASSWORD = pass -e   MYSQL_DATABASE = keystone -d mysql:latest

安装了 mysql verison 8.0.11 和身份验证类型 &#39; caching_sha2_password&#39; 是问题所在。 这answer给了我很多帮助。

我使用以下命令( mysql:5.7)

创建了容器
  

sudo docker run --name keystone -e MYSQL_ROOT_PASSWORD = pass -e   MYSQL_DATABASE = keystone -d mysql:5.7

允许我使用标准身份验证类型创建用户。

N.B不要忘记添加必需的管理角色架构特权