Tomasz, are you using a non-latin1 character set?
The bug fixed in 3.23.49 " MySQL/InnoDB-3.23.49, February 17, 2002 * Fixed a bug: if one defined a non-latin1 character set as the default character set, then definition of foreign key constraints could fail in an assertion failure in dict0crea.c, reporting an internal error 17. " might be the root of your problem with 4.0.1. Best regards, Heikki Tuuri Innobase Oy --- Order technical MySQL/InnoDB support at https://order.mysql.com/ Speed up adding of features to MySQL/InnoDB through support contracts See http://www.innodb.com for the online manual and latest news on InnoDB -----Original Message----- From: Heikki Tuuri <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] <[EMAIL PROTECTED]> Date: Thursday, March 14, 2002 8:57 AM Subject: Re: constraints in InnoDB, or is 3.23.43b _really_ < 4.0.1? >Tomasz, > >are you sure you are running 4.0.1? In the rpm of 4.0.0 there were no >foreign keys. > >I tested this on mysql-max-4.0.1, and it worked. > >Best regards, > >Heikki Tuuri >Innobase Oy >--- >Order technical MySQL/InnoDB support at https://order.mysql.com/ >Speed up adding of features to MySQL/InnoDB through support contracts >See http://www.innodb.com for the online manual and latest news on InnoDB > >... > >heikki@hundin:~/mysql-max-4.0.1-alpha-pc-linux-gnu-i686/bin> mysql test >Welcome to the MySQL monitor. Commands end with ; or \g. >Your MySQL connection id is 1 to server version: 4.0.1-alpha-max-log > >Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > >mysql> CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id)) TYPE=INNODB; >Query OK, 0 rows affected (0.10 sec) > >mysql> CREATE TABLE child(id INT, parent_id INT, INDEX par_ind (parent_id), > -> FOREIGN KEY (parent_id) REFERENCES parent(id)) >TYPE=INN >ODB; >Query OK, 0 rows affected (0.00 sec) > >mysql> show table status from test; >+--------+--------+------------+------+----------------+-------------+----- - >---- >-------+--------------+-----------+----------------+-------------+--------- - >---+ >------------+----------------+--------------------------------------------- - >---- >---------+ >| Name | Type | Row_format | Rows | Avg_row_length | Data_length | >Max_data_ >length | Index_length | Data_free | Auto_increment | Create_time | >Update_time | > Check_time | Create_options | Comment > | >+--------+--------+------------+------+----------------+-------------+----- - >---- >-------+--------------+-----------+----------------+-------------+--------- - >---+ >------------+----------------+--------------------------------------------- - >---- >---------+ >| child | InnoDB | Fixed | 0 | 0 | 16384 | > NULL | 16384 | 0 | NULL | NULL | NULL >| > NULL | | InnoDB free: 700416 kB; (parent_id) REFER >test/pa >rent(id) | >| parent | InnoDB | Fixed | 0 | 0 | 16384 | > NULL | 0 | 0 | NULL | NULL | NULL >| > NULL | | InnoDB free: 700416 kB > | >+--------+--------+------------+------+----------------+-------------+----- - >---- >-------+--------------+-----------+----------------+-------------+--------- - >---+ >------------+----------------+--------------------------------------------- - >---- >---------+ >2 rows in set (0.03 sec) > >mysql> >-----Original Message----- >From: Tomasz Korycki <[EMAIL PROTECTED]> >Newsgroups: mailing.database.mysql >Date: Thursday, March 14, 2002 6:53 AM >Subject: Re: constraints in InnoDB, or is 3.23.43b _really_ < 4.0.1? > > >>At 16:57 2002-03-13, Rick Flower wrote: >>>Tomasz writes: >>> >>>>> >From section 16 of http://www.innodb.com/ibman.html you find detailed >>>>>information about every InnoDB version. For example, 4.0.1 == 3.23.47. >>>>> >>>>>Foreign keys should work in 4.0.1. >>> >>>> Hmmm... That's what I read, too. And after several unsuccesful >>>attempts >>>>to create my own tables, I did those contained on Your site, verbatim (as >>>I >>>>put in my original message). Still, no effect. I guess the question then >>>>becomes: is 4.0.1 really able to keep track of constraints but unable to >>>>show them? In which case, how can one find out what they are (if extant)? >>> >>>Are you sure that you've got a MySQL-Max server, or at least one built >with >>>InnoDB support enabled? If you didn't, you might not get an InnoDB table >>>even if you asked for one.. Unfortunately, the SQL parser is somewhat >stupid >>>and doesn't bother telling you that you did something dumb or that doesn't >>>make sense in regards to how the server was built.. I've run into things >>>like that numerous times.. >> >>SHOW TABLE STATUS sez it's InnoDB... >> >>>As for listing out the foreign key constraints, that only works if you >issue >>>a "show table status;" for MySQL 3.23.4x, and you will get something like >>>the following "REFER" statement : >> >>OK, which version, exactly, do You get following output from? Oh, never >>mind, I see it's .47. Which according to Heikki Tuuri of InnoDB is the same >>as mine... >> >>>| ITEM | InnoDB | Dynamic | 0 | 0 | >>>16384 | NULL | 0 | 0 | NULL | NULL >>>| NULL | NULL | | InnoDB free: 4901888 >kB | >>>| ITEM_DEF | InnoDB | Dynamic | 0 | 0 | >>>16384 | NULL | 16384 | 0 | NULL | NULL >>>| NULL | NULL | | InnoDB free: 4901888 >>>kB; (ITEM_NAME) REFER dbname/ITEM(ITEM_NAME) >> >>Because mine stops after "InnoDB free: <whatever> kB" >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> snip! <<<<<<<<<<<<<<<<<<<<<<<< >>>Hopefully this might shed some light on your problem.. >> >>No, it didn't. It turns out we have (according to InnoDB) the same version >>of the DB, yet mine behaves differently than mine. Oh, well. Just so You >>needn't fish out beginning of this thread, mine is 4.0.1. I don't quite >>know what to think at this point... >> >>> Below are the samples from above that you can feed directly into MySQL >>> and see what it produces.. These work fine on our installation of 3.23.47 >>> -- with InnoDB support enabled of course.. >> >>Thanks for the statements below. Unfortunately, after I try them (word for >>word, I want to eliminate possibility of my error), SHOW TABLE STATUS still >>ends right after "InnoDB free:<>" comment. >> >>>create table if not exists ITEM >>>( >>> ITEM_NAME varchar(64) not null, >>> DESCRIPTION varchar(255), >>> primary key (ITEM_NAME) >>>) TYPE=INNODB; >>>create table if not exists ITEM_DEF >>>( >>> ITEMDEF_ID int not null, >>> ITEM_NAME varchar(64), >>> primary key (ITEMDEF_ID), >>> INDEX FK_ITEM_NAME_INDEX(ITEM_NAME), >>> FOREIGN KEY (ITEM_NAME) REFERENCES ITEM(ITEM_NAME) >>>) TYPE=INNODB; >>> >>>-- Rick >> >>Thanks! So, what's next? >>-------------------------------------------------- >>sql, query >>Tomasz Korycki [EMAIL PROTECTED] >> >> >>--------------------------------------------------------------------- >>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 >> > --------------------------------------------------------------------- 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