[ https://issues.apache.org/jira/browse/CAY-2021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15960761#comment-15960761 ]
ASF GitHub Bot commented on CAY-2021: ------------------------------------- GitHub user nismooooooo opened a pull request: https://github.com/apache/cayenne/pull/187 CAY-2021 cdbimport: detect when same FK constraint is defined twice You can merge this pull request into a Git repository by running: $ git pull https://github.com/nismooooooo/cayenne CAY-2021 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/cayenne/pull/187.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #187 ---- commit 21832ffa9db0e31dee077399a8257168c43aa596 Author: Anton Dreka <drek...@gmail.com> Date: 2017-04-07T13:03:07Z CAY-2021 cdbimport: detect when same FK constraint is defined twice ---- > cdbimport: detect when same FK constraint is defined twice > ---------------------------------------------------------- > > Key: CAY-2021 > URL: https://issues.apache.org/jira/browse/CAY-2021 > Project: Cayenne > Issue Type: Improvement > Environment: MySQL 5.6.13-enterprise-commercial-advanced > Cayenne 4.0.M3 custom build from rev 0ac54cb > Reporter: Andrus Adamchik > Assignee: Nikita Timofeev > Priority: Trivial > > I have a table that defines two constraints over the same exact FK/PK pair > (this was by mistake, and I have cleaned it up since, but never the less, > MySQL treats this as a valid definition) : > CREATE TABLE `origin` ( > `ID` int(11) unsigned NOT NULL AUTO_INCREMENT, > `A2_TEAM_ID` int(11) unsigned DEFAULT NULL, > PRIMARY KEY (`ID`), > UNIQUE KEY `NAME` (`NAME`), > KEY `A2_TEAM_ID` (`A2_TEAM_ID`), > CONSTRAINT `origin_ibfk_1` FOREIGN KEY (`A2_TEAM_ID`) REFERENCES `a2_team` > (`ID`), > CONSTRAINT `FK_ORIGIN_TO_TEAM` FOREIGN KEY (`A2_TEAM_ID`) REFERENCES > `a2_team` (`ID`) > ) ENGINE=InnoDB AUTO_INCREMENT=175 DEFAULT CHARSET=utf8 > When doing cdbimport from Maven, I got the following exception in the logs: > [ERROR] Migration Error. Can't apply changes from token: Add Relationship > (a2Team origin->a2_team.{ID, ID}) > java.lang.IllegalArgumentException: An attempt to override relationship > 'a2Team' > at org.apache.cayenne.map.Entity.addRelationship(Entity.java:193) > at > org.apache.cayenne.merge.AddRelationshipToModel.execute(AddRelationshipToModel.java:43) > at > org.apache.cayenne.tools.dbimport.DbImportAction.execute(DbImportAction.java:218) > at > org.apache.cayenne.tools.dbimport.DbImportAction.execute(DbImportAction.java:118) > at > org.apache.cayenne.tools.DbImporterMojo.execute(DbImporterMojo.java:257) > at > org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) > [INFO] Migration Complete. > [WARNING] Migration finished. The following problem(s) were ignored. > [WARNING] Validation failure for java.lang.IllegalArgumentException: > Migration Error. Can't apply changes from token: Add Relationship (a2Team > origin->a2_team.{ID, ID}) > So the exception was caught and the build ultimately succeeded, but the stack > trace in the default Maven log made me think there was something wrong with > the build. Perhaps we reduce the log level for the stack trace to DEBUG. The > WARNING after it should be enough. > So perhaps we don't log the stack trace in this situation -- This message was sent by Atlassian JIRA (v6.3.15#6346)