`

用户 'malone' 登录失败。 ClientConnectionId:

    博客分类:
  • jdbc
阅读更多

使用jdbc.properties配置文件配置数据库连接的时候,spring的配置文件中引用jdbc.properties,

 jdbc.properties配置如下:

className=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://client.retail-download.com:9572;databaseName=prcsales_external_dev
username=prcsms_pactera
password=********
#dbcp settings
dbcp.maxIdle=50
dbcp.maxActive=20000

 当查询数据库时,报如下错误:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'malone' 登录失败。 ClientConnectionId:26735a1b-968b-4567-ae11-0cc13cdd2fb9

 

根据错误仔细检查:数据库的用户名明明是prcsms_pactera,为什么会提示“用户 'malone' 登录失败”呢?

 

spring配置文件中使用jdbc.properties如下:

    <description>Spring公共配置</description>
    <!-- 定义受环境影响易变的变量 -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
        <property name="ignoreResourceNotFound" value="true"/>
        <property name="locations">
            <list> 
                <value>classpath*:/properties/jdbc.properties</value>
           </list>
      </property>
    </bean>  

    <!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <!-- Connection Info -->
        <property name="driverClassName" value="${className}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>

        <!-- Connection Pooling Info -->
        <property name="initialSize" value="10"/>
        <property name="maxIdle" value="${dbcp.maxIdle}"/>
        <property name="maxActive" value="${dbcp.maxActive}"/>
        <property name="validationQuery" value="select 1"/>
        <property name="testOnBorrow" value="true"/>
        <property name="defaultAutoCommit" value="true"/>
        <property name="timeBetweenEvictionRunsMillis" value="3600000"/>
        <property name="minEvictableIdleTimeMillis" value="3600000"/>
        <property name="removeAbandonedTimeout" value="120" />
        <property name="removeAbandoned" value="true" />
    </bean>

 自己手动去创建数据库连接并操作都是正常的,为什么使用spring去创建dataSource会报错,检查了很久发现,“malone”是登陆当前windows的用户名,

仔细思考应该是这样的,${username}并没有去jdbc.properties文件中获取属性值,而是获取了windows的变量,导致获取的用户名为"malone",所以只需要改变jdbc配置文件中的属性名称即可:

className=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://client.retail-download.com:9572;databaseName=prcsales_external_dev
db_username=prcsms_pactera
password=*******
#dbcp settings
dbcp.maxIdle=50
dbcp.maxActive=20000

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics