如何在c3p0数据源中使用mysql自定义端口?

时间:2015-01-29 05:34:07

标签: java mysql spring c3p0

我在本地系统的3306端口上运行了一个mysql。并且还有另一个mysql在13000上运行。而我试图连接到13000实例仍然连接到3306实例。 c3p0数据源采用默认端口,它只是忽略端口。有人可以帮忙吗???

Spring bean:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">

        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost:13000/dbname?autoReconnect=true" />
        <property name="user" value="user" />
        <property name="password" value="pwd" />

        <property name="idleConnectionTestPeriod" value="55" />
        <property name="initialPoolSize" value="10" />
        <property name="maxIdleTime" value="60" />

        <property name="maxPoolSize" value="15" />
        <property name="minPoolSize" value="5" />
    </bean> 

修改 即使简单的JDBC程序也连接到3306。

2 个答案:

答案 0 :(得分:1)

c3p0不会解析JDBC网址或对其中的内容做任何假设。它只是询问您的JDBC驱动程序(通过DriverManager,或通过直接实例化的驱动程序,如果您配置forceUseNamedDriverClass)返回提供的URL的连接。问题绝对不是c3p0忽略了非默认端口。 c3p0忽略了这一切。它不知道也不关心。

我会尝试验证您认为正在配置的JDBC URL是否正在实际进入您正在创建的池中。如果您的计算机上有多个MySQL实例,那么您可能在某处有冲突的配置。 c3p0在池启动时将其配置转储到INFO级别的应用程序日志。查找,并验证您的c3p0 DataSource使用的URL是您要配置的URL。

否则,请尝试检查对DriverManager.getConnection( myJdbcUrl )的调用是否会将您带到所需的DBMS。这基本上就是呼唤。 (它实际上是在调用DriverManager.getConnection( myJdbcUrl, info ),其中info是一个属性对象。除非您将forceUseNamedDriverClass设置为true。)

答案 1 :(得分:0)

终于找到了问题。原因是我正在使用mysql-connector-java.5.1.9.jar,因此该连接器中存在错误。所以我把它改成了最新版本然后我的问题得到了解决。

感谢。