DBUnit - integrity constraint violation: foreign key keine Aktion; SYS_FK_10556
Ich bin zurzeit Codierung testen mit dbunit(mit hsqldb). Jedoch, ich habe ein großes Problem bei der Initialisierung der db:
hier der code:
/**
* Init before a test starts
*/
@Before
public void initialise() {
IDataSet dataSetRating = null;
IDataSet dataSetMovie = null;
log.info("enter init test");
try {
con = datasource.getConnection();
icon = new DatabaseConnection(con);
File rating = new File("./src/test/resources/startDatabaseRating.xml");
dataSetRating = new FlatXmlDataSetBuilder().build(rating);
DatabaseOperation.CLEAN_INSERT.execute(icon, dataSetRating);
} catch (Exception e) {
e.printStackTrace();
log.error(e);
System.exit(-1);
}
}
mein create-statement wie folgt Aussehen:
CREATE TABLE Rating
(
rid INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
mid INTEGER FOREIGN KEY REFERENCES Movie(movieId),
rating INTEGER NOT NULL,
);
und meine startDatabaseRating.xml sieht so aus:
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<Rating rid="0" mid="0" rating="1" />
<Rating rid="1" mid="0" rating="2" />
<Rating rid="2" mid="0" rating="3" />
<Rating rid="3" mid="0" rating="4" />
<Movie movieid="0" title="Movie1" moviePath="C" />
<Movie movieid="1" title="Movie2" moviePath="D" />
</dataset>
Wenn ich die tests auszuführen bekomme ich:
java.sql.SQLIntegrityConstraintViolationException: Integrität
constraint-Verletzung: foreign key keine Aktion; SYS_FK_10556 Tabelle:
BEWERTUNG
Warum bekomme ich diese Ausnahme, weil es ist immer noch ein Datensatz im *.xml-Datei. Wie dieses problem zu lösen?
UPDATE:
CREATE TABLE Movie
(
movieId INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
title VARCHAR(255) NOT NULL,
moviePath VARCHAR(500) NOT NULL
);
welche db benutzt du?
Ich verwende hsqldb...
zeigen Sie uns die "Tabelle erstellen" für den Film
Ich habe meinen Beitrag aktualisiert mit der "create table" - Film...
Ich verwende hsqldb...
zeigen Sie uns die "Tabelle erstellen" für den Film
Ich habe meinen Beitrag aktualisiert mit der "create table" - Film...
InformationsquelleAutor maximus | 2013-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim einfügen einer Bewertung, der Film, auf den verwiesen wird, muss existieren bereits in der
movie
Tabelle. Sie sind also das einfügen der Zeilen in der falschen Reihenfolge.Müssen Sie zuerst legen Sie die Filme, dann die Bewertungen.
InformationsquelleAutor a_horse_with_no_name
Ich würde auch empfehlen Sie die Verwendung von regulären Etiketten für Ihre Spalten, vor allem für die id und die Fremdschlüssel, denn es ist sehr viel leichter zu verstehen und zu pflegen, wenn eine andere person ist verantwortlich für dein code !
InformationsquelleAutor Rimey