Rafal, I tested also with the `hotele`, and it worked ok.
Please provide your my.cnf and MySQL version number. And test if you can repeat the error. Regards, Heikki Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.0.8-gamma-standard-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> drop database test; Query OK, 0 rows affected (0.08 sec) mysql> create database test; Query OK, 1 row affected (0.00 sec) mysql> CREATE TABLE `hotele` ( -> `nip_h` int(10) NOT NULL default '0', -> `nazwa_h` varchar(100) NOT NULL default '', -> `miasto_h` varchar(50) NOT NULL default '', -> `kodpocz_h` int(5) NOT NULL default '0', -> `adres_h` varchar(50) default NULL, -> `email_h` varchar(50) default NULL, -> `kontobank_h` int(32) default NULL, -> `wyprzedaz_h` varchar(10) default NULL, -> `standard_h` varchar(20) default NULL, -> `opis_h` varchar(200) default NULL, -> PRIMARY KEY (`nip_h`) -> ) TYPE=InnoDB; Query OK, 0 rows affected (0.00 sec) mysql> mysql> CREATE TABLE `pokoje` ( -> `nrpok_p` char(10) NOT NULL default '', -> `nip_h` int(10) NOT NULL default '0', -> `lozka_p` char(2) default NULL, -> `tv_p` char(1) default NULL, -> `lazienka_p` char(1) default NULL, -> `cena_p` int(10) default NULL, -> `zaliczka_p` int(10) default NULL, -> PRIMARY KEY (`nrpok_p`,`nip_h`), -> FOREIGN KEY (`nip_h`) REFERENCES `hotele` (`nip_h`) ON DELETE CASCADE, -> KEY `nip_h_index` (`nip_h`,`nrpok_p`), -> ) TYPE=InnoDB; Query OK, 0 rows affected (0.00 sec) mysql> mysql> CREATE TABLE `rezerwacje` ( -> `id_r` int(10) NOT NULL default '0', -> `pesel_k` int(11) default NULL, -> `nip_h` int(10) NOT NULL default '0', -> `nrpok_p` char(10) NOT NULL default '', -> `data_r` date default NULL, -> `od_r` date default NULL, -> `do_r` date default NULL, -> `cena_r` int(10) default NULL, -> `zaliczka_r` int(5) default NULL, -> `zaplac_r` char(1) default NULL, -> `wplaczal_r` char(1) default NULL, -> PRIMARY KEY (`id_r`), -> KEY `nip_h_index` (`nip_h`,`nrpok_p`) -> ) TYPE=InnoDB; Query OK, 0 rows affected (0.01 sec) mysql> mysql> alter table rezerwacje add foreign key (nip_h,nrpok_p) references -> pokoje(nip_h,nrpok_p); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 ----- Original Message ----- From: "Heikki Tuuri" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Thursday, January 09, 2003 11:04 PM Subject: Re: Bug in foreign keys > Rafal, > > ----- Original Message ----- > From: "Rafal Jank" <[EMAIL PROTECTED]> > Newsgroups: mailing.database.mysql > Sent: Thursday, January 09, 2003 6:18 PM > Subject: Bug in foreign keys > > > > Hi! > > I have two tables: > > CREATE TABLE `pokoje` ( > > `nrpok_p` char(10) NOT NULL default '', > > `nip_h` int(10) NOT NULL default '0', > > `lozka_p` char(2) default NULL, > > `tv_p` char(1) default NULL, > > `lazienka_p` char(1) default NULL, > > `cena_p` int(10) default NULL, > > `zaliczka_p` int(10) default NULL, > > PRIMARY KEY (`nrpok_p`,`nip_h`), > > KEY `nip_h_index` (`nip_h`,`nrpok_p`), > > FOREIGN KEY (`nip_h`) REFERENCES `hotele` (`nip_h`) ON DELETE CASCADE > > ) TYPE=InnoDB; > > > > CREATE TABLE `rezerwacje` ( > > `id_r` int(10) NOT NULL default '0', > > `pesel_k` int(11) default NULL, > > `nip_h` int(10) NOT NULL default '0', > > `nrpok_p` char(10) NOT NULL default '', > > `data_r` date default NULL, > > `od_r` date default NULL, > > `do_r` date default NULL, > > `cena_r` int(10) default NULL, > > `zaliczka_r` int(5) default NULL, > > `zaplac_r` char(1) default NULL, > > `wplaczal_r` char(1) default NULL, > > PRIMARY KEY (`id_r`), > > KEY `nip_h_index` (`nip_h`,`nrpok_p`) > > ) TYPE=InnoDB; > > > > Now, when I try: > > alter table rezerwacje add foreign key (nip_h,nrpok_p) references > > pokoje(nip_h,nrpok_p); > > I get: > > ERROR 1005: Can't create table './test/#sql-932_4.frm' (errno: 150) > > > > Why? > > > what is your MySQL version? What is the OS? What is the > default-character-set in my.cnf? What does SHOW CREATE TABLE say for every > table involved, also `hotel`? Can you write a script which repeats the > error? > > I tested a slightly more complex script in the latest MySQL-4.0 source tree, > with the latin1_de charset and it ran without errors: > > > CREATE TABLE `hotele` ( > `nip_h` int(10) NOT NULL default '0', > `abbaguu` int(10), > PRIMARY KEY (`nip_h`) > ) TYPE = InnoDB; > > CREATE TABLE `pokoje` ( > `nrpok_p` char(10) NOT NULL default '', > `nip_h` int(10) NOT NULL default '0', > `lozka_p` char(2) default NULL, > `tv_p` char(1) default NULL, > `lazienka_p` char(1) default NULL, > `cena_p` int(10) default NULL, > `zaliczka_p` int(10) default NULL, > PRIMARY KEY (`nrpok_p`,`nip_h`), > FOREIGN KEY (`nip_h`) REFERENCES `hotele` (`nip_h`) ON DELETE CASCADE, > KEY `nip_h_index` (`nip_h`,`nrpok_p`), > ) TYPE=InnoDB; > > CREATE TABLE `rezerwacje` ( > `id_r` int(10) NOT NULL default '0', > `pesel_k` int(11) default NULL, > `nip_h` int(10) NOT NULL default '0', > `nrpok_p` char(10) NOT NULL default '', > `data_r` date default NULL, > `od_r` date default NULL, > `do_r` date default NULL, > `cena_r` int(10) default NULL, > `zaliczka_r` int(5) default NULL, > `zaplac_r` char(1) default NULL, > `wplaczal_r` char(1) default NULL, > PRIMARY KEY (`id_r`), > KEY `nip_h_index` (`nip_h`,`nrpok_p`) > ) TYPE=InnoDB; > > CREATE TABLE `kukkuu` ( > `id_r` int(10) NOT NULL default '0', > PRIMARY KEY (`id_r`), > FOREIGN KEY (`id_r`) REFERENCES `rezerwacje` (`id_r`) > ) TYPE=InnoDB; > > alter table rezerwacje add foreign key (nip_h,nrpok_p) references > pokoje(nip_h,nrpok_p); > > > mysql> CREATE TABLE `hotele` ( > -> `nip_h` int(10) NOT NULL default '0', > -> `abbaguu` int(10), > -> PRIMARY KEY (`nip_h`) > -> ) TYPE = InnoDB; > Query OK, 0 rows affected (0.00 sec) > > mysql> > mysql> CREATE TABLE `pokoje` ( > -> `nrpok_p` char(10) NOT NULL default '', > -> `nip_h` int(10) NOT NULL default '0', > -> `lozka_p` char(2) default NULL, > -> `tv_p` char(1) default NULL, > -> `lazienka_p` char(1) default NULL, > -> `cena_p` int(10) default NULL, > -> `zaliczka_p` int(10) default NULL, > -> PRIMARY KEY (`nrpok_p`,`nip_h`), > -> FOREIGN KEY (`nip_h`) REFERENCES `hotele` (`nip_h`) ON DELETE > CASCADE, > -> KEY `nip_h_index` (`nip_h`,`nrpok_p`), > -> ) TYPE=InnoDB; > Query OK, 0 rows affected (0.00 sec) > > mysql> > mysql> CREATE TABLE `rezerwacje` ( > -> `id_r` int(10) NOT NULL default '0', > -> `pesel_k` int(11) default NULL, > -> `nip_h` int(10) NOT NULL default '0', > -> `nrpok_p` char(10) NOT NULL default '', > -> `data_r` date default NULL, > -> `od_r` date default NULL, > -> `do_r` date default NULL, > -> `cena_r` int(10) default NULL, > -> `zaliczka_r` int(5) default NULL, > -> `zaplac_r` char(1) default NULL, > -> `wplaczal_r` char(1) default NULL, > -> PRIMARY KEY (`id_r`), > -> KEY `nip_h_index` (`nip_h`,`nrpok_p`) > -> ) TYPE=InnoDB; > Query OK, 0 rows affected (0.00 sec) > > mysql> > mysql> CREATE TABLE `kukkuu` ( > -> `id_r` int(10) NOT NULL default '0', > -> PRIMARY KEY (`id_r`), > -> FOREIGN KEY (`id_r`) REFERENCES `rezerwacje` (`id_r`) > -> ) TYPE=InnoDB; > Query OK, 0 rows affected (0.01 sec) > > mysql> > mysql> alter table rezerwacje add foreign key (nip_h,nrpok_p) references > -> pokoje(nip_h,nrpok_p); > Query OK, 0 rows affected (0.01 sec) > Records: 0 Duplicates: 0 Warnings: 0 > > mysql> > > > -- > > _/ _/ _/_/_/ ----- Rafał Jank [EMAIL PROTECTED] ----- > > _/ _/ _/ _/ _/ Wirtualna Polska SA http://www.wp.pl > > _/_/_/_/ _/_/_/ ul. Traugutta 115c, 80-237 Gdansk, tel/fax. > (58)5215625 > > _/ _/ _/ --------==* http://szukaj.wp.pl *==---------- > > Best regards, > > Heikki Tuuri > Innobase Oy > --- > Order technical MySQL/InnoDB support at https://order.mysql.com/ > See http://www.innodb.com for the online manual and latest news on InnoDB > > sql query > > --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php