个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
Maven项目管理时,连接数据库报错
- 一、报错内容
- 二、分析与解决
一、报错内容
在JDBC连接数据库时,代码没有错,运行却出现报错信息:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at org.junit.runners.ParentRunner2.
e
v
a
l
u
a
t
e
(
P
a
r
e
n
t
R
u
n
n
e
r
.
j
a
v
a
:
268
)
a
t
j
a
v
a
.
l
a
n
g
.
r
e
f
l
e
c
t
.
C
o
n
s
t
r
u
c
t
o
r
.
n
e
w
I
n
s
t
a
n
c
e
(
C
o
n
s
t
r
u
c
t
o
r
.
j
a
v
a
:
423
)
a
t
o
r
g
.
j
u
n
i
t
.
r
u
n
n
e
r
s
.
P
a
r
e
n
t
R
u
n
n
e
r
.
r
u
n
(
P
a
r
e
n
t
R
u
n
n
e
r
.
j
a
v
a
:
363
)
a
t
c
o
m
.
m
y
s
q
l
.
j
d
b
c
.
U
t
i
l
.
h
a
n
d
l
e
N
e
w
I
n
s
t
a
n
c
e
(
U
t
i
l
.
j
a
v
a
:
404
)
a
t
o
r
g
.
j
u
n
i
t
.
r
u
n
n
e
r
.
J
U
n
i
t
C
o
r
e
.
r
u
n
(
J
U
n
i
t
C
o
r
e
.
j
a
v
a
:
137
)
a
t
c
o
m
.
m
y
s
q
l
.
j
d
b
c
.
U
t
i
l
.
g
e
t
I
n
s
t
a
n
c
e
(
U
t
i
l
.
j
a
v
a
:
387
)
a
t
c
o
m
.
i
n
t
e
l
l
i
j
.
j
u
n
i
t
4.
J
U
n
i
t
4
I
d
e
a
T
e
s
t
R
u
n
n
e
r
.
s
t
a
r
t
R
u
n
n
e
r
W
i
t
h
A
r
g
s
(
J
U
n
i
t
4
I
d
e
a
T
e
s
t
R
u
n
n
e
r
.
j
a
v
a
:
69
)
a
t
c
o
m
.
m
y
s
q
l
.
j
d
b
c
.
S
Q
L
E
r
r
o
r
.
c
r
e
a
t
e
S
Q
L
E
x
c
e
p
t
i
o
n
(
S
Q
L
E
r
r
o
r
.
j
a
v
a
:
919
)
a
t
c
o
m
.
i
n
t
e
l
l
i
j
.
r
t
.
j
u
n
i
t
.
I
d
e
a
T
e
s
t
R
u
n
n
e
r
2.evaluate(ParentRunner.java:268) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.mysql.jdbc.Util.getInstance(Util.java:387) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) at com.intellij.rt.junit.IdeaTestRunner
2.evaluate(ParentRunner.java:268)atjava.lang.reflect.Constructor.newInstance(Constructor.java:423)atorg.junit.runners.ParentRunner.run(ParentRunner.java:363)atcom.mysql.jdbc.Util.handleNewInstance(Util.java:404)atorg.junit.runner.JUnitCore.run(JUnitCore.java:137)atcom.mysql.jdbc.Util.getInstance(Util.java:387)atcom.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)atcom.intellij.rt.junit.IdeaTestRunnerRepeater
1.
e
x
e
c
u
t
e
(
I
d
e
a
T
e
s
t
R
u
n
n
e
r
.
j
a
v
a
:
38
)
a
t
c
o
m
.
m
y
s
q
l
.
j
d
b
c
.
S
Q
L
E
r
r
o
r
.
c
r
e
a
t
e
S
Q
L
E
x
c
e
p
t
i
o
n
(
S
Q
L
E
r
r
o
r
.
j
a
v
a
:
898
)
a
t
c
o
m
.
i
n
t
e
l
l
i
j
.
r
t
.
e
x
e
c
u
t
i
o
n
.
j
u
n
i
t
.
T
e
s
t
s
R
e
p
e
a
t
e
r
.
r
e
p
e
a
t
(
T
e
s
t
s
R
e
p
e
a
t
e
r
.
j
a
v
a
:
11
)
a
t
c
o
m
.
m
y
s
q
l
.
j
d
b
c
.
S
Q
L
E
r
r
o
r
.
c
r
e
a
t
e
S
Q
L
E
x
c
e
p
t
i
o
n
(
S
Q
L
E
r
r
o
r
.
j
a
v
a
:
887
)
a
t
c
o
m
.
i
n
t
e
l
l
i
j
.
r
t
.
j
u
n
i
t
.
I
d
e
a
T
e
s
t
R
u
n
n
e
r
1.execute(IdeaTestRunner.java:38) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.intellij.rt.junit.IdeaTestRunner
1.execute(IdeaTestRunner.java:38)atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)atcom.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)atcom.intellij.rt.junit.IdeaTestRunnerRepeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:862)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2331)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084)
Caused by: java.lang.NullPointerException: null
二、分析与解决
我出现这个问题后,找到的原因是:Maven添加管理的mysql-connector-java依赖版本与下载使用的MySQL版本不一致导致的无法获取数据库连接对象。
- Maven添加的版本:5.1.37
dependency>
groupId>mysqlgroupId>
artifactId>mysql-connector-javaartifactId>
version>5.1.37version>
dependency>
…
- 实际下载使用的MySQL版本:8.0.31
解决方案
:
- 将IDEA项目中Maven的pom.xml配置文件中添加的依赖版本改为自己正在使用的MySQL版本即可:
dependency>
groupId>mysqlgroupId>
artifactId>mysql-connector-javaartifactId>
version>8.0.31version>
dependency>
**改完后记得重启IDEA**
测试:
@Test
public void testGetConnection(){
Connection connection = JDBCUtils.getConnection();
System.out.println("connection = " + connection);
}
}
成功获取连接对象,问题解决: