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