2016-04-09 5 views
0

Ich versuche, Datensätze in die folgenden Tabellen mithilfe von SQL in Google Cloud SQL hinzuzufügen.Google Cloud SQL mysql_query Hinzufügen oder Aktualisieren einer untergeordneten Zeile nicht möglich

CREATE DATABASE IF NOT EXISTS phunter_spark; 

USE phunter_spark; 

DROP TABLE IF EXISTS Vote; 
DROP TABLE IF EXISTS Product; 
CREATE TABLE IF NOT EXISTS Product 
(
    id varchar(255), 
    name varchar(255), 
    PRIMARY KEY (id) 
); 

CREATE TABLE IF NOT EXISTS Vote 
(
    userId varchar(255), 
    prodId varchar(255), 
    rating int, 
    PRIMARY KEY(prodId, userId), 
    FOREIGN KEY (prodId) 
    REFERENCES Product(id) 
); 

Beim Hochladen der Produkttabelle funktioniert es einwandfrei. Beispiel Produkt CSV-Daten ist:

57243,We Are Heroes 
57242,Tesla Model 3 
57239,Captain Strike 
57229,Gmail Mic Drop 
57223,Sponge Club 

Allerdings gibt es einen Fehler beim Hochladen von Abstimmungen. Beispiel Vote CSV-Daten:

129455,57119,1 
105600,57245,1 
105600,57246,1 
139608,54933,1 
129455,57242,1 
7926,57242,1 

Ich bin 100% sicher, immer ProdID in der Abstimmung CSV-Daten als ein Objekt in der Produkt-SQL-Datenbank enthalten sind. nicht ganz sicher, was ich fehle ... auch relativ neu in MySQL-Datenbanken

Der Fehler ist geworfen wie folgt:

mysql_query Cannot add or update a child row: a foreign key constraint 
fails (`phunter_spark`.`Vote`, CONSTRAINT `Vote_ibfk_1` FOREIGN KEY 
(`prodId`) REFERENCES `Product` (`id`)) (LOAD DATA INFILE 
'gs://dateless-votes-tenk.csv' INTO TABLE `Vote` 
CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"') 

Antwort

1

Spalt Ihrer prod ID in der ID-Tabelle Referenzen Abstimmung in Produkttabelle. Diese

FOREIGN KEY (prodId) 
    REFERENCES Product(id) 

bedeutet, dass jeder Wert eingefügt in prod ID-Spalte von Tabelle sollte in Abstimmung ID-Spalte in Tabelle Produkt vorhanden sein.

http://www.w3schools.com/sql/sql_foreignkey.asp

57119,57245 etc in Ihrer zweiten CSV-Datei möglicherweise nicht Verweis in der Spalte id der Product-Tabelle.

+0

Ist dies das einzig mögliche Problem? Ich habe die Abstimmungsdaten so bereinigt, dass nur Abstimmungen enthalten sind, die in der Produkttabelle vorhanden sind. Das führt mich dazu, etwas anderes zu glauben ist das Problem –

+0

Es gibt kein anderes Problem, das ich kenne. In der Fehlerbeschreibung wird eindeutig angegeben, dass das Problem bei einer CSV-Datei auftritt. Achten Sie auf das Vorhandensein von Leerzeichen in Ihrer Stimmdatei. "57229" und "57229" sind unterschiedlich. Ich hoffe, Sie haben die Spalten id und prodid bereits mit der Funktion match oder vlookup in Excel abgeglichen. –

Verwandte Themen