Hi!
At 04:10 PM 12/13/01 -0200, you wrote:
>Heikki Tuuri wrote:
>>
>> Hi!
>>
>> Foreign keys do not work if you do an ALTER TABLE. I have to add a note to
>> the manual that they do not work even if you do an ALTER TABLE to the
>> referenced table.
>>
>> Workaround: use DROP TABLE + CREATE TABLE to alter your table, whether it is
>> the referring table or the referenced table.
>>
>> If you do an ALTER TABLE to the referring table, then InnoDB drops all
>> foreign key constraints in it. But I forgot to add a note that an ALTER
>> TABLE in the referenced table also causes problems, because ALTER TABLE
>> actually renames the table during the process.
>
>That's not the case. We have never executed ALTER TABLE in that table.
>It just changed the reference to that #sql name suddenly. This caused
>problem to us, since that table no longer existed and we couldn't insert
>fields in the "child" table anymore.
>
>It has happened two times and we're only using it as a test environment.
>I want to make it clear that foreign key constraints are working before
>we put it on production. Or else I'd have to do it without foreign keys,
>which I think it's not a good idea.
Please try to find a repeatable test case.
I just tried ALTER TABLE to a referenced table and got the following:
| child1 | InnoDB | Fixed | 2 | 8192 | 16384 |
NULL | 16384 | 0 | NULL | NULL
| NULL | NULL | | InnoDB free: 136192 kB;
(a) REFER test/#sql2-6f0a-1(a); (b) REFER test/parent2(b) |
It looks a lot like the problem you reported.
>--
>Leonardo Dias
>Catho Online
>WebDeveloper
>http://www.catho.com.br/
Regards,
Heikki
Innobase Oy
---
See http://www.innodb.com for the latest news about InnoDB
Order commercial MySQL/InnoDB support at https://order.mysql.com/
---------------------------------------------------------------------
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