关于org.dbunit.database.AmbiguousTableNameException:异常
org.dbunit.database.AmbiguousTableNameException:
在使用springboot和dbutils时,在测试dao层的时候出现该情况
下面展示一些
public class TestUserDao {
private UserDao userDao;
private DatabaseConnection databaseConnection;
@Before
public void init() throws SQLException, DatabaseUnitException {
userDao = new UserDao();
databaseConnection=new DatabaseConnection(JdbcUtils.getConnection());
}
@Test
public void testfindUserByid() throws Exception {
// System.out.println("获取链接"+databaseConnection.getConnection());
//备份数据
backAllTables();
}
/**
* 备份所有表的数据
* @author sosmcc
* @param
*/
private void backAllTables() throws Exception {
IDataSet dataSet = connection.createDataSet();
FlatXmlDataSet.write(dataSet,new FileOutputStream(new File("D:/Desktop/allback.xml")));
}
}
当运行的时候会出现
原因是:数据库里面你表的名字重复,比如你用的是
user数据库 里面的 t_user表,
但是你的另外一个数据库admin表名也是:
t_user
就会出现该错误
无论你是用德鲁伊还是c3p0
解决办法
- 把数据库的表名全部改了,别重复
- 使用dbutils提供的mysql专用的Connection
IDatabaseConnection connection =new MySqlConnection(Jdbcutils.getconnection(),"cartest");
“cartest”指的就是你的数据库名字
完美运行