Avatar billede kinguru Nybegynder
18. august 2003 - 09:08 Der er 3 kommentarer

Problem med foreign keys

Hej eksperter.

Jeg har problemer med foreign keys i mySQL.
Jeg kan ikke gennemskue hvad det er der ikke fungere, eller ikke er korrekt opsat på min maskine.

Jeg har to tables hvor 'child' har en foreign key til 'parent'. Oprettelsen ser tilsyneladende ud til at fungere.
Her er et dump af de to tables:
# phpMyAdmin MySQL-Dump
# version 2.3.3pl1
# http://www.phpmyadmin.net/ (download page)
#
# Vært: 127.0.0.1:3306
# Genereringstidspunkt: 18/08 2003 kl. 09:03:38
# Server version: 4.00.12
# PHP version: 4.3.2
# Database: : `freeriders_dk_db`
# --------------------------------------------------------

#
# Struktur dump for tabellen `child`
#

CREATE TABLE child (
  username varchar(20) NOT NULL default '',
  skole text NOT NULL,
  KEY username (username),
  FOREIGN KEY (`username`) REFERENCES `parent` (`username`) ON DELETE CASCADE
) TYPE=InnoDB;
# --------------------------------------------------------

#
# Struktur dump for tabellen `parent`
#

CREATE TABLE parent (
  username varchar(20) NOT NULL default '',
  beskrivelse text NOT NULL,
  PRIMARY KEY  (username)
) TYPE=InnoDB;

Jeg bruger EMS mySQL Manager, og der burde man kunne ændre i foreign keys, slette o.lign. men så snart foreign key er oprettet mellem disse to tables kan jeg ikke ændre i dem mere.

Jeg prøver denne query for at slette foreign keyen igen:
ALTER TABLE child DROP FOREIGN KEY
Men jeg får denne fejl:
Can't create table '.\freeriders_dk_db\#sql-70c_20.frm' (errno: 150)

Jeg har også søgt på google efter at se om nogen kunne hjælpe mig.
Jeg fandt nogen der sagde noget med at tmpdir skulle være sat i my.ini, derfor addede jeg denne linje:
[mysqld]
tmpdir=C:/temp

Men det har hellere ikke hjulpet.

Jeg kører mySQL 4.0.12

Det skal lige siges at det ikke kun er disse to tables det ikke fungere med, det er lige meget hvilken table det er, så virker det ikke korrekt.
Avatar billede detox Nybegynder
18. august 2003 - 09:30 #1
Måske dette indlæg fra manualen (http://www.mysql.com/doc/en/ALTER_TABLE.html), kan skabe lidt klarhed.

Oh, I've forgotten: Be Aware at the foreign Keys! The foreign keys can not be deleted by now. I hope MySQL developers will continue in development of that to. You can only completely drop the table where your foreign key is set, afterwards create the table again (with or without the foreign keys) and then (if not in CREATE TABLE statement) recreate your new foreign keys with the ALTER TABLE statement.
Avatar billede kinguru Nybegynder
18. august 2003 - 11:01 #2
Aha..

Så hvis jeg har forstået, så er det sådan at man ikke kan slette foreign keys, hellere ikke med ALTER TABLE! :-)

Tak...
Avatar billede detox Nybegynder
18. august 2003 - 11:06 #3
Velbekommen. Vi må håbe det bliver forbedret i kommende versioner.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester