• 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

8 år 3 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

8 år 3 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

GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0
KDE Plasma 6.6 tilføjer en funktion, som brugerne har spurgt efter i evigheder 0
Linux i København 12.01.2026: Open source i det offentlige 0
Dansk distro Omarchy 0
KDE overgår indsamlingsmålet for 2025 med rekordstor støtte fra lokalsamfundet 0

Seneste aktivitet

Linux Mint 22.3 - hvornår opdatere? 9
E-mail blues 5
BigLinux 1
Canon-printer: Jeg savner "Ink-Toner Level"-meddelelse 10
billede af nuværende installation 2
mapper 4
LinuxIn live 9
Linux Debian på ekstern HD 4
usb disk *LØST* 2
Pacman kunne erstattes af en anden Rust baseret mulighed 1
Epson skanner software 8
Debian 1
Printer Epson ET-2865 problem 8
Winboat 4
Nu kan man skrive private beskeder 14
Mint på imac 2009 34
Firefox AI 7
Kunstig inteligens 6
Kopiering til min Samsung telefon 9
Installation af programmer 21

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !