mysql - org.dbunit.database.AmbiguousTableNameException 与 MySQL 8
问题描述
有人可以帮我吗?
使用带有 mysql 8 的 dbunit-maven-plugin-1.0-beta-3 将元数据加载到带有 mysql-connector-java-8.0.22 的数据库表中。
得到如下错误
org.apache.maven.lifecycle.LifecycleExecutionException: Error executing database operation: CLEAN_INSERT
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error executing database operation: CLEAN_INSERT
at org.codehaus.mojo.dbunit.OperationMojo.execute(OperationMojo.java:109)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
... 17 more
Caused by: org.dbunit.database.AmbiguousTableNameException: USERTABLE
at org.dbunit.dataset.OrderedTableNameMap.add(OrderedTableNameMap.java:198)
at org.dbunit.database.DatabaseDataSet.initialize(DatabaseDataSet.java:227)
at org.dbunit.database.DatabaseDataSet.getTableMetaData(DatabaseDataSet.java:275)
at org.dbunit.operation.DeleteAllOperation.execute(DeleteAllOperation.java:109)
at org.dbunit.operation.CompositeOperation.execute(CompositeOperation.java:79)
at org.dbunit.ant.Operation.execute(Operation.java:195)
at org.codehaus.mojo.dbunit.OperationMojo.execute(OperationMojo.java:100)
... 19 more
顺便说一句,我有两个具有相同表名的数据库。
仅供参考,它适用于 mysql-connoctor-java-5.1.49。但在我们的例子中,我们需要使用 mysql 连接器 8.0.22。
谢谢。
解决方案
这是 pom dbunit 配置的一部分,它为我修复了这个配置。
<schema>test_database</schema>
<dataTypeFactoryName>org.dbunit.ext.mysql.MySqlDataTypeFactory</dataTypeFactoryName>
<metadataHandlerName>org.dbunit.ext.mysql.MySqlMetadataHandler</metadataHandlerName>
推荐阅读
- javascript - /x|y|z/ 的含义
- python - 如何运行影响我的变量且不会破坏我的代码的 while 循环?
- python-3.x - OSX PyShark:RuntimeWarning:从未等待协程“wait_for”
- clang - 如何识别 Clang QualType 是函数指针?
- mongodb - docker-compose 在 mognodb 中创建用户
- python - 如何在 python 中将多个图像打包到一个图像或 numpy 数组中?
- ios - TableViewController 和 ViewController 之间的委托
- javascript - Easyautocomplete + Vue.js - 如何通过点击更新存储的变量?
- python - 打开文本文件时 tkinter 没有响应
- java - 使用无头 JS 时没有为关键错误注册任务