problema con relaciones en mysql 4.0.15
estoy desarrollando un sitio con la versión mysql para windows. con la versión 4.1.5 todo va bien. como necesito integridad referencial, creé tablas tipo innodb y todo bien. sin embargo, la empresa que me da el hosting me dice que tienen instalada la versión 4.0.5. me la bajé, la instalé y he aquí que no encuentro la forma de crear las relaciones. con las tablas tipo innodb me da error. si las tablas son tipo myisam, no recibo error, pero no me crea las relaciones. he probado a hacerlo en modo gráfico, mediante mysql administrator 1.0.13 y mediante mysql control center 0.9.4 beta y nada. con el comando sql correspondiente recibo el mismo error que con estos dos programas (can't create table ......). ¿alguien puede ayudarme? en algún lugar de esta misma página encontré lo siguiente, pero ni así he conseguido solucionarlo-->
Si MySQL da un error cuyo número es el 1005 al momento de ejecutar una sentencia CREATE TABLE, y el mensaje de error se refiere al número 150, la creación de la tabla falló porque la restricción de la clave foránea no se hizo de la manera adecuada. De la misma manera, si falla una sentencia ALTER TABLE y se hace referencia al error número 150, esto significa que la definición de la restricción de la clave foránea no se hizo adecuadamente. A partir de la versión 4.0.13 de MySQL, se puede usar la sentencia SHOW INNODB STATUS para ver una explicación detallada del último error que se generó en relación a la definición de una clave foránea --> Estos dos errores (el 1005 y la referencia al 150 son los que recibo). ¿Alguien puede ayudarme?Gracias de antemano.
Si MySQL da un error cuyo número es el 1005 al momento de ejecutar una sentencia CREATE TABLE, y el mensaje de error se refiere al número 150, la creación de la tabla falló porque la restricción de la clave foránea no se hizo de la manera adecuada. De la misma manera, si falla una sentencia ALTER TABLE y se hace referencia al error número 150, esto significa que la definición de la restricción de la clave foránea no se hizo adecuadamente. A partir de la versión 4.0.13 de MySQL, se puede usar la sentencia SHOW INNODB STATUS para ver una explicación detallada del último error que se generó en relación a la definición de una clave foránea --> Estos dos errores (el 1005 y la referencia al 150 son los que recibo). ¿Alguien puede ayudarme?Gracias de antemano.
ya encontre la solución: antes de crear la relación, hai que crear un nuevo indice asociado al campo al que se dirige la relación en la tabla referenciada. En mi caso concreto, el código es el siguiente:
ALTER TABLE reservas ADD KEY indice_reservas(hora);
ALTER TABLE `reservas`.`reservas` ADD FOREIGN KEY `FK_reservas_1` (`hora`)
REFERENCES `horas` (`hora`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE reservas ADD KEY indice_reservas(hora);
ALTER TABLE `reservas`.`reservas` ADD FOREIGN KEY `FK_reservas_1` (`hora`)
REFERENCES `horas` (`hora`)
ON DELETE CASCADE
ON UPDATE CASCADE;
