私の人生にとって私はどこでうまくできませんでしたか?私は、このSQLコードを使用して作られた以下の表を、持っている:MySQLエラーコード1452が発生しますが、値とテーブルが存在します
CREATE TABLE IF NOT EXISTS Users(
username VARCHAR(50) NOT NULL PRIMARY KEY,
pwd TEXT NOT NULL,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(25) NOT NULL,
user_type VARCHAR(25) NOT NULL,
user_status VARCHAR(10) NOT NULL,
email VARCHAR(255) NOT NULL
);
CREATE UNIQUE INDEX Users_Index
ON Users (username);
CREATE TABLE IF NOT EXISTS Clients(
client_id VARCHAR(10) PRIMARY KEY,
client_name VARCHAR(255) NOT NULL UNIQUE,
first_name VARCHAR(25) NOT NULL,
last_name VARCHAR(25) NOT NULL,
middle_name VARCHAR(25),
related_to VARCHAR(10),
relation_type VARCHAR(25),
ssn_ein VARCHAR(11) NOT NULL UNIQUE,
date_of_birth DATE NOT NULL,
manager VARCHAR(50) NOT NULL,
entity_type VARCHAR(50) NOT NULL,
client_status VARCHAR(15) NOT NULL,
address VARCHAR(255) NOT NULL,
city VARCHAR(255) NOT NULL,
state VARCHAR(2) NOT NULL,
zip INT NOT NULL,
email VARCHAR(255),
phone VARCHAR(255) NOT NULL,
notes TEXT,
FOREIGN KEY(manager) REFERENCES Users(username)
);
CREATE UNIQUE INDEX username_index
ON Clients(manager);
私はClientsテーブルにデータを挿入しようとしたが、それは私に制約チェックが失敗したときのためにあるのエラー1452を、与えました。私はすでにUsersテーブルにデータを持っています。私はTRIPLEでタイプミスをチェックしています。両方のテーブルにインデックスを追加していないので、参照が正しいテーブルを指していることを確認しました。 InnoDBだけでなく照合順序も正確で、usernameカラムとmanagerカラムは同じ正確なデータ型です。私はMySQLのドキュメントをチェックし、すべての必要条件を守って私の知識を最大限に引き出しました。誰が問題になるかも知っていますか?
INSERT INTO Clients VALUES (
client_id = "123456",
client_name = "John Doe",
first_name = "John",
last_name = "Doe",
middle_name = "Michael",
related_to = NULL,
relation_type = NULL,
ssn_ein = "123-456-7890",
date_of_birth = "1990-01-01",
manager = "OzzyTheGiant",
entity_type = "Individual",
client_status = "Active",
address = "123 Main St.",
city = "Anytown",
state = "XX",
zip = 78550,
email = "[email protected]",
phone = "123-555-7890",
notes = "self-employed"
);
(手のひらを顔に当てる)......あなたは、私がそのようなINSERT文を書いた理由を知りたいですか?私はPythonフラスコのアプリケーションでPeeweeを使用しているので、PythonとSQLの間で構文を切り替えるのを忘れてしまいます。私のおかしい。あなたは勝つ! .... btw。ユーザーテーブルのデータが存在していたため、存在しませんでした。 – OzzyTheGiant
また、将来この問題を抱える人にとって、私の単純な間違いから学べることの1つは、MySQLが構文エラーかどうかを教えてくれないことです。何らかの理由でエラー1452を吐き出します。各列の値としてのコンマの間 – OzzyTheGiant