• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af peque | 20.10.2017 10:43

MySQL Issues

Hjælp generelt
Hey.
Jeg er ved at oprette en MYSQL database , som jeg skal have nogle forskellige tabeller i, og enkelte tabeller skal have Foreign Keys - Men jeg kan ganske enkelt ikke se mig ud af dette
Jeg har følgende 2 tabeller - hvor den ene har FK
CREATE TABLE shipping
(
sid SERIAL UNIQUE NOT NULL,
name VARCHAR(50) NOT NULL,
address VARCHAR(50) NOT NULL,
postal VARCHAR(10) NOT NULL,
city VARCHAR(50) NOT NULL,
contact VARCHAR(50) NOT NULL,
o_phone VARCHAR(20) NOT NULL,
m_phone VARCHAR(20) NOT NULL,
email VARCHAR(50) NOT NULL,
PRIMARY KEY (sid)
);

CREATE TABLE vessels
(
id SERIAL UNIQUE NOT NULL,
imo VARCHAR(7) NOT NULL,
name VARCHAR(50) NOT NULL,
sid BIGINT(20) ,
PRIMARY KEY (id),
FOREIGN KEY (sid) REFERENCES shipping(`sid`)
);

Query OK, 0 rows affected (0,55 sec)
Query OK, 0 rows affected (0,68 sec)
ERROR 1215 (HY000): Cannot add foreign key constraint

Jeg har prøvet at benævne FK med og uden quotes - Men jeg får denne fejl uanset hvad:

Det sjove er at jeg i alt har 5 tabeller jeg skal have oprettet - men den første fungerer uden problemer:


CREATE TABLE login
(
uid VARCHAR(4) PRIMARY KEY,
password VARCHAR(20) NOT NULL,
role VARCHAR(1) NOT NULL
);

CREATE TABLE users
(
uid VARCHAR(4) NOT NULL,
id SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
company VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
phone VARCHAR(30) NULL,
created VARCHAR(4) NOT NULL,
FOREIGN KEY (uid) REFERENCES login(uid)
);


Jeg kan ganske enkelt ikke se hvad og hvor jeg gør noget forkert her - og hvad der skal til for jeg kan oprette denne Foreign Key

PFT
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer2

# 1

7 år 8 måneder siden

Permalink

Indsendt af phoenix den 20. oktober 2017 kl. 19:18

Permalink

Forskellige typer

Jeg tror problemet er at din foreign key ikke er af samme type i de to tabeller.
vessels.sid er af typen BigInt og den referer shipping.sid som er en unsigned BigInt (Serial).

https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html:
SERIAL is an alias for BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
  • Log ind eller opret dig for at tilføje kommentarer

# 2

7 år 8 måneder siden

Permalink

Indsendt af peque den 23. oktober 2017 kl. 09:55

Permalink

Jeg har rodet en hel del med

Jeg har rodet en hel del med det - og netop også prøvet med unsigned.

Løsningen var reelt at sætte Primary key til sidst inden jeg oprettede goreign key - så godkendte den det:

CREATE TABLE users
(
uid VARCHAR(4) NOT NULL,
id SERIAL NOT NULL,
name VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
company VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
phone VARCHAR(30) NULL,
created VARCHAR(4) NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (uid) REFERENCES login(uid)
);
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

den er sjov 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

"Intet realistisk alternativ" - mig i r*ven 17
Open source events i danmark? 3
Virtuel maskine? 4
Gode anmeldelser Zorin OS 17.3 8
Open Source-eksperimentet 5
En snak om Linux-kompatibel software 7
Nulstilling af adgangskode 6
PCLinuxOS 27
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15
Pepsi Challenge 4

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !