Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

engine=INNODB vs TYPE=MyISAM

Estas en el tema de engine=INNODB vs TYPE=MyISAM en el foro de Mysql en Foros del Web. Hola a todos. Os cuento el problema. Tenía una base de datos en MySQL. La creé, y creé las tablas sin tener en cuenta temas ...
  #1 (permalink)  
Antiguo 08/08/2011, 13:59
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
engine=INNODB vs TYPE=MyISAM

Hola a todos. Os cuento el problema. Tenía una base de datos en MySQL. La creé, y creé las tablas sin tener en cuenta temas de codificación ( UTF-8 ). Esta base de datos daba soporte a una aplicación web. La web ha empezado a mostrar carácteres raros, y hemos decidido montar todo con la codificación UTF-8.

Bien, la web todavía no está en marcha, por lo que estamos a tiempo de volver a crear la base de datos, definiendo esta vez que queremos trabajar con la codificación UTF-8. Es decir, no tenemos que hacer una migración. Simplemente volver a crear nuevamente nuestra base de datos. A nivel de metadatos, creemos que ya lo tenemos todo listo ( modificando el archivo de configuración de mysql, etc ). La duda la tenemos ahora en la sintaxis de creación de tablas. Lo que nos intersaría saber es, ¿qué sintaxis deberíamos emplear en la creación de la tablas? Concretamente, ¿Es necesario especificar "TYPE=MyISAM" o podemos continuar con engine=INNODB? Nuestra base datos esta compuesta por una 300 tablas relacionadas entre ellas, mediante claves foráneas. En su día leímos que, si se quiere trabajar con bases de datos relacionales, las tablas deben especificarse como: "engine=INNODB". Ahora, que queremos crear nuevamente todas las tablas, pero con la codificación UTF-8, hemos encontrado la siguiente sintaxis:

CREATE TABLE tabla(
ID int(9) NOT NULL AUTO_INCREMENT,
campo1 int(15) NOT NULL DEFAULT 0,
campo2 varchar(100) DEFAULT NULL,
PRIMARY KEY (ID)
) TYPE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;


Vemos que emplea: "TYPE=MyISAM". En nuestro caso, como se trata de una base de datos relacional, ¿podemos continuar con "engine=INNODB" en lugar de "TYPE=MyISAM"?

Muchísimas gracias por vuestra ayuda. Seguramente será una pregunta básica, pero, como estamos dispuestos a crear nuevamente toda la base de datos, nos gustaría saber que esta vez lo estamos haciendo bien.
  #2 (permalink)  
Antiguo 08/08/2011, 17:03
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: engine=INNODB vs TYPE=MyISAM

Si tus base de datos utilizan llaves foráneas (FOREIGN KEYS), debes utilizar InnoDB. MyISAM no soporta llaves foraneas.

Probablemente salga asi porque MyISAM es el motor por defecto para las tablas.
  #3 (permalink)  
Antiguo 09/08/2011, 08:47
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: engine=INNODB vs TYPE=MyISAM

Estupendo!! Genial Muchas gracias!!

Etiquetas: sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:54.