在 MyBatis 连接数据库时可能出现以下异常:
一、java.sql.SQLException
-
原因:
- 这是一个通用的 SQL 异常,可能由多种原因引起。常见的情况包括数据库连接参数错误(如 URL、用户名、密码错误)、数据库服务器不可用、驱动未正确加载等。
- 例如,如果数据库连接 URL 中的主机名、端口号或数据库名称错误,就会导致无法连接到数据库,从而抛出此异常。
-
示例错误信息:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/incorrect_database
(找不到合适的驱动程序或数据库名称错误)。java.sql.SQLException: Access denied for user 'wrong_username'@'localhost' (using password: YES)
(用户名或密码错误被拒绝访问)。
二、org.apache.ibatis.exceptions.PersistenceException
-
原因:
- MyBatis 在执行数据库操作时发生的持久性异常。可能是由于 SQL 语句错误、数据库连接问题或 MyBatis 配置错误引起的。
- 例如,如果 SQL 语句中的表名或列名错误,或者数据库连接在执行操作时断开,就会抛出此异常。
-
示例错误信息:
org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Table 'mytable' not found.
(表未找到,可能是 SQL 语句中的表名错误或数据库中确实不存在该表)。
三、java.lang.ClassNotFoundException
-
原因:
- 当 MyBatis 尝试加载数据库驱动类时,如果找不到该类,就会抛出此异常。通常是因为没有正确添加数据库驱动依赖到项目中。
- 例如,对于 MySQL 数据库,如果没有在项目的类路径中包含 MySQL 驱动 JAR 文件或没有正确配置 Maven 依赖,就会出现这个问题。
-
示例错误信息:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
(找不到 MySQL 数据库驱动类)。
四、org.apache.ibatis.datasource.DataSourceException
-
原因:
- 与数据源相关的异常,可能是数据源配置错误、连接池问题或无法获取数据库连接引起的。
- 例如,如果配置的数据库连接池参数不正确,导致无法创建连接池或获取连接失败,就会抛出此异常。
-
示例错误信息:
org.apache.ibatis.datasource.DataSourceException: Error getting pooled connection. Cause: java.sql.SQLException: Connections could not be acquired from the underlying database!
(无法从底层数据库获取连接,可能是连接池配置错误或数据库服务器不可用)。