问题:
今天在整合SSM的时候,为了配置更加灵活,准备在外部写个db.properties来引入四大配置,如下
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC username=root password=root
然后在内部引入这个文件
<context:property-placeholder location="classpath:db.properties"/> <!--数据源--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </bean>
问题出现了,在没有外部资源引入的情况下,项目运行正常,但这样一番操作后,项目报如下错误
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user ‘é½�è��è��’@‘localhost’ (using password: YES)
一开始没有发现猫腻,换了无数次mysql的驱动版本,最后发现properties里面的username只需要换个名字即可,因为username=root,会被解析成电脑的账户名字(一串乱码,当时也很懵逼),真是坑啊,也怪我经验不足。
解决:
db.username=root
<property name="username" value="${db.username}"/>
只需要换这一个即可。