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 '"')
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 –
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. –