Error #1005 – Can’t create table… en MySQL al intentar crear una relacion 1-M

Posted by Kelvin on Jul 25, 2009 in MySQL |
Logo MySQL

Logo MySQL

Estaba intentando hacer una relacion (unos a muchos 1-M) en una base de datos en MySQL ya existente  y recibia este error: #1005 - Can't create table 'table_name.#sql-344_126' (errno: 121)

La razon es que tenia varios asuntos sin resolver:

El campo a ser utilizado en la relacion tiene que ser llave primaria o indice (primary key or index).

Ambas tablas tienen que ser Engine InnoDB, para modificar una tabla existente puedes utilizar el siguente commando:

SQL:
  1. ALTER TABLE 'table_name' ENGINE = InnoDB;

Para alterar una tabla ya existente, creando asi la relacion:

SQL:
  1. ALTER TABLE usuarios
  2. ADD CONSTRAINT country_id
  3. FOREIGN KEY (country_id)
  4. REFERENCES countries (country_id)
  5. ON DELETE CASCADE ON UPDATE CASCADE

Pueden conseguir mas informacion en este blog: MySQL Error Number 1005 Can’t create table ‘.\mydb\#sql-328_45.frm’ (errno: 150)

Tags: , , , ,

Free wordpress layouts | Free drupal skins | Free joomla skins | Free mediawiki templates | Free pligg templates | Review template providers" | Professional Web Templates |

1 Comment

Xavi Montero
Aug 13, 2009 at 7:04 pm

Por si le sirve a alguien:

Yo me he estado volviendo loco con el mismo problema, el TIPO DE DATO era idéntico. en ambos casos era un VARCHAR(36) que utilizo para almacenar como claves primarias un UUID estándar en formato “string”.

Sin embargo al ser texto, tienen asociado un “código de caracteres” y una tabla se creó con el tenía el charset con “UTF” y otra con el “LATIN”.

No enlazaban por eso.

Cambiando el charset para ser todo coherente (ambos a utf8 o ambos a latin) ya me dejó crear la FOREIGN KEY sin el error del “can’t create table…”


 

Reply

Copyright © 2010 What I like! All rights reserved.