Kom ihåg mig?
Home Menu

Menu


MySQL Error 1005 (Errno 150)

Ämnesverktyg Visningsalternativ
Oläst 2008-11-12, 21:25 #1
festizs avatar
festiz festiz är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2004
Inlägg: 302
festiz festiz är inte uppkopplad
Flitig postare
festizs avatar
 
Reg.datum: Jun 2004
Inlägg: 302
Jag fattar inte riktigt varför detta inte går, vet inte om jag missar något, men visst ska väl två fält kunna referera till samma fält i en annan tabell? Och auto_increment räknas väl inte som data type på det sättet att det måste vara samma på både FK och det som FK pekar på?

#1005 - Can't create table './test/crm9_person.frm' (errno: 150)
Kod:
DROP TABLE IF EXISTS `crm9_address`;
CREATE TABLE `crm9_address` (
`id` int(255) NOT NULL auto_increment,
`address1` varchar(255) NOT NULL default '',
`address2` varchar(255) NOT NULL default '',
`zipcode` varchar(7) NOT NULL default '',
`city` varchar(40) NOT NULL default '',
`country` varchar(40) NOT NULL default '',
`mail` varchar(255) NOT NULL default '',
`gatecode` text,
`notes` text,
PRIMARY KEY (`id`) )ENGINE=INNODB;

DROP TABLE IF EXISTS `crm9_person`;
CREATE TABLE `crm9_person` (
`id` int(255) NOT NULL auto_increment,
`companyname` varchar(255) NOT NULL default '',
`contactname` varchar(255) NOT NULL default '',
`securitynumber` varchar(12) NOT NULL default '',
`cellphone` varchar(16) NOT NULL default '',
`telephone` varchar(16) NOT NULL default '',
`telefax` varchar(16) NOT NULL default '',
`on_call_address` int(255) NOT NULL default '0',
`invoice_address` int(255) NOT NULL default '0',
`custtype` int(11) default '3',
`granskad` int(255) default NULL,
`fakturatyp` int(10) default NULL,
`notes` text,
PRIMARY KEY (`id`),
INDEX (on_call_address, invoice_address),
CONSTRAINT person_has_address FOREIGN KEY (`on_call_address`, `invoice_address`)
REFERENCES crm9_address(id, id) ON UPDATE CASCADE ON DELETE RESTRICT )ENGINE=INNODB AUTO_INCREMENT=20;
Tacksam för hjälp!
festiz är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-12, 23:45 #2
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
Kolla checkarna här: http://sql-info.de/mysql/referential-integrity.html
MMC är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-12, 23:45 #3
sixten sixten är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2008
Inlägg: 11
sixten sixten är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2008
Inlägg: 11
Kan inte detta något vidare jag skulle prova med 2 constraints; 1 på varje.


Jag provade med följande. Korrekt, men Du kanske inte uppnår Dina syften.


DROP TABLE IF EXISTS `crm9_address`;
CREATE TABLE `crm9_address` (
`id` int(255) NOT NULL auto_increment,
`address1` varchar(255) NOT NULL default '',
`address2` varchar(255) NOT NULL default '',
`zipcode` varchar(7) NOT NULL default '',
`city` varchar(40) NOT NULL default '',
`country` varchar(40) NOT NULL default '',
`mail` varchar(255) NOT NULL default '',
`gatecode` text,
`notes` text,
PRIMARY KEY (`id`) )ENGINE=INNODB;

DROP TABLE IF EXISTS `crm9_person`;
CREATE TABLE `crm9_person` (
`id` int(255) NOT NULL auto_increment,
`companyname` varchar(255) NOT NULL default '',
`contactname` varchar(255) NOT NULL default '',
`securitynumber` varchar(12) NOT NULL default '',
`cellphone` varchar(16) NOT NULL default '',
`telephone` varchar(16) NOT NULL default '',
`telefax` varchar(16) NOT NULL default '',
`on_call_address` int(255) NOT NULL default '0',
`invoice_address` int(255) NOT NULL default '0',
`custtype` int(11) default '3',
`granskad` int(255) default NULL,
`fakturatyp` int(10) default NULL,
`notes` text,
PRIMARY KEY (`id`),
INDEX (on_call_address, invoice_address),
CONSTRAINT person_has_address_for_ONK FOREIGN KEY (`on_call_address`)
REFERENCES crm9_address(id) ON UPDATE CASCADE ON DELETE RESTRICT ,

CONSTRAINT person_has_address_for_INV FOREIGN KEY ( `invoice_address`)
REFERENCES crm9_address(id) ON UPDATE CASCADE ON DELETE RESTRICT
)
ENGINE=INNODB AUTO_INCREMENT=20;

HAVE IT!
sixten är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-13, 09:23 #4
coredevs avatar
coredev coredev är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Sep 2007
Inlägg: 1 554
coredev coredev är inte uppkopplad
Bara ett inlägg till!
coredevs avatar
 
Reg.datum: Sep 2007
Inlägg: 1 554
Om det skulle lösa problemen så fundera över om du kan klara dig utan dina FOREIGN KEYs. Vet att FOREIGN KEY låter bra i teorin, men behövs sällan i praktiken. :-)
coredev är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-11-13, 11:03 #5
festizs avatar
festiz festiz är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2004
Inlägg: 302
festiz festiz är inte uppkopplad
Flitig postare
festizs avatar
 
Reg.datum: Jun 2004
Inlägg: 302
Citat:
Originally posted by sixten@Nov 13 2008, 00:45
Kan inte detta något vidare jag skulle prova med 2 constraints; 1 på varje.


Jag provade med följande. Korrekt, men Du kanske inte uppnår Dina syften.

INDEX (on_call_address, invoice_address),
CONSTRAINT person_has_address_for_ONK FOREIGN KEY (`on_call_address`)
REFERENCES crm9_address(id) ON UPDATE CASCADE ON DELETE RESTRICT ,

CONSTRAINT person_has_address_for_INV FOREIGN KEY ( `invoice_address`)
REFERENCES crm9_address(id) ON UPDATE CASCADE ON DELETE RESTRICT
)
HAVE IT!
Naturligtvis, den bygger ju 2 constraints och namnet på dessa måste vara unikt. Så det är ju klart att jag inte kan ha två fält pekandes mot samma under samma namn.
festiz är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 03:00.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017