2016-04-09 21 views
0

Google Cloud SQLでsqlを使用してフォローテーブルにレコードを追加しようとしています。Google Cloud SQL mysql_query子ローを追加または更新できません

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) 
); 

Productテーブルをアップロードするときは、正常に動作します。例製品のCSVデータは次のとおりです。

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

ただし、投票をアップロードしようとするとエラーが発生します。例投票CSVデータは次のとおりです。私は製品のSQLデータベース内のオブジェクトとして含まれている投票CSVデータで100%必ず今までPRODIDだ

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

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

答えて

1

製品テーブル内の投票テーブルの参照IDであなたのprod ID列:次のようにも、私が行方不明だ... MySQLデータベースへの比較的新しい

エラーがスローされていることであるかなり確実ではありません。

これは、voteテーブルのprod idカラムに挿入された値がProductテーブルのidカラムに存在することを意味します。 2番目のcsvファイルで

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

57119,57245などは、製品テーブルのidカラム内の参照を持っていないかもしれません。

+0

これが唯一の問題ですか?私は投票テーブルのデータをサニタイズして、プロダクトテーブルにプロットされた投票者のみを含むようにしました。これは他の何かが問題だと私に信じさせる。 –

+0

私が知っている他の問題はない。エラーステートメントは、問題がCSVファイルであることを明確に示しています。あなたの投票ファイルに空白がないか調べてください。 「57229」と「57229」は異なります。あなたがすでに列idとprodidとmatchまたはvlookup関数を使ってexcelでマッチしたことを願っています。 –

関連する問題