Ich versuche, einen Varchar-Wert als Fremdschlüssel hinzuzufügen.MySQL - Varchar als Fremdschlüssel hinzufügen
Ich habe versucht, einen KEY innerhalb der Password_Encryption-Tabelle hinzuzufügen, aber das hat nicht funktioniert. Dann habe ich versucht, einen INDEX zu erstellen, und das hat auch nicht funktioniert.
Der Fehler, den ich bekomme, ist "Fehlercode: 1215. Kann keine Fremdschlüsseleinschränkung hinzufügen".
Ich bin mir bewusst, dass das Komma in der PRIMARY KEY-Zeile von Password_Encryption einen Fehler verursachen würde.
Die Tabellen Ich habe diesbezüglich sind
CREATE TABLE Login (
login_id INT NOT NULL AUTO_INCREMENT,
login_date DATE NOT NULL,
customer_id INT DEFAULT 0,
business_id INT DEFAULT 0,
password_entered VARCHAR(16) DEFAULT 'password',
password_encryption VARCHAR(20),
PRIMARY KEY (login_id, login_date)
);
CREATE TABLE Password_Encryption (
encryption_id INT NOT NULL AUTO_INCREMENT,
login_id INT NOT NULL,
password_encryption VARCHAR(20),
password_saved VARCHAR(16) NOT NULL,
is_valid ENUM('false','true') NOT NULL DEFAULT 'false',
/*KEY pw_enc (password_encryption),*/
PRIMARY KEY (encryption_id),
/*CONSTRAINT pw_enc FOREIGN KEY (password_encryption) REFERENCES Login
(password_encryption)*/
);
CREATE INDEX pw_enc ON Password_Encryption(password_encryption);
ALTER TABLE Password_Encryption
ADD CONSTRAINT pw_enc FOREIGN KEY (password_encryption) REFERENCES Login (password_encryption);
Ich habe mir auch andere Antworten auf Stack Overflow angesehen. Ich habe sie so gut wie möglich ausprobiert und kann es immer noch nicht zur Arbeit bringen. –
Bitte beschreiben Sie die Beziehung zwischen den beiden Tabellen. –
Die Variable password_encryption in der Password_Encryption-Tabelle ist ein Fremdschlüssel, der aus der Login-Tabelle mit derselben benannten Variablen stammt. Ich kenne den Code dafür nicht. –