2017-04-12 44 views
-1

これは私の最初の質問です。この新しいデータベースを作成しようとしていますが、スクリプトを実行するとMySQLはエラー1215を送信します。mysqlエラー1215:外部キー制約を追加できません//このテーブルの作成

私の恐ろしい英語のために申し訳ありません、私sudamerican。ここ はコードはあなたの助けの人たちのための

CREATE TABLE mae_comuna(
comu_id   int PRIMARY KEY AUTO_INCREMENT, 
comu_descripcion VARCHAR (20) NOT NULL, 
comu_vigencia CHAR (1) NOT NULL 
); 

CREATE TABLE mae_region(
reg_id int AUTO_INCREMENT PRIMARY KEY, 
reg_region VARCHAR (20) NOT NULL , 
reg_vigencia CHAR (1) NOT NULL 
) ; 

CREATE TABLE mae_tipo_direccion(
tipo_direc_id   INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
tipo_direc_descripcion VARCHAR (20) NOT NULL , 
tipo_direc_vigencia CHAR (1) NOT NULL 
) ; 

CREATE TABLE mae_tipo_persona(
tipo_per_id   INT NOT NULL PRIMARY KEY AUTO_INCREMENT , 
tipo_per_descripcion VARCHAR (50) NOT NULL , 
tipo_per_vigencia CHAR (1) NOT NULL 
); 

CREATE TABLE zs_usuario(
usu_id    INT PRIMARY KEY AUTO_INCREMENT , 
usu_nombre_usuario VARCHAR (50) NOT NULL , 
usu_contraseña  VARCHAR (15) NOT NULL , 
usu_vigencia  CHAR (1) NOT NULL 
) ; 

CREATE TABLE zs_camionero(
cami_id    INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
cami_tipo_camionero VARCHAR (10) NOT NULL, 
cami_vigencia  CHAR (1) NOT NULL 
) ; 

CREATE TABLE zs_cliente(
cli_rut   INT NOT NULL PRIMARY KEY, 
cli_dv    CHAR (1) NOT NULL , 
cli_tarifa_peso FLOAT NOT NULL, 
cli_tarifa_volumen FLOAT NOT NULL, 
cli_vigencia  CHAR (1) NOT NULL 
) ; 

CREATE TABLE zs_persona(
per_id      INT PRIMARY KEY AUTO_INCREMENT , 
per_rut      INT NOT NULL , 
per_dv      CHAR (1) NOT NULL, 
per_nombres     VARCHAR (30) NOT NULL , 
per_apellido_aterno   VARCHAR (15) NOT NULL , 
per_apellido_materno   VARCHAR (15) NOT NULL , 
per_nombre_completo   VARCHAR (70) NOT NULL ,  
per_fecha_nacimiento   DATE, 
per_fecha_registro   DATE, 
per_sexo      CHAR (1) NOT NULL , 
per_telefono     INT NOT NULL, 
per_email     VARCHAR(50) NOT NULL, 
per_vigencia     CHAR (1) NOT NULL , 
tipo_per_id     INT NOT NULL, 
usu_id      INT, 
cli_id      INT, 
per_id      INT, 
cami_id      INT,  
FOREIGN KEY (tipo_per_id) REFERENCES mae_tipo_persona(per_id), 
FOREIGN KEY (usu_id) REFERENCES zs_usuario(usu_id), 
FOREIGN KEY (cli_id) REFERENCES zs_cliente(per_id), 
FOREIGN KEY (cami_id) REFERENCES zs_camionero(cami_id)  
) ; 

CREATE TABLE zs_direccion(
dir_id  INT NOT NULL PRIMARY KEY AUTO_INCREMENT , 
dir_direccion VARCHAR (50) NOT NULL , 
dir_numero   INT, 
dir_vigencia  CHAR (1) NOT NULL,  
comu_id INT, 
per_id INT, 
reg_id INT, 
FOREIGN KEY (comu_id) REFERENCES mae_comuna(comu_id), 
FOREIGN KEY (per_id) REFERENCES zs_persona(per_id), 
FOREIGN KEY (reg_id) REFERENCES mae_region(reg_id) 
) ; 

CREATE TABLE zs_manifiesto_carga(
mc_numero_manifiesto INT PRIMARY KEY AUTO_INCREMENT, 
mc_fecha_salida  DATE NOT NULL, 
mc_fecha_embarque DATE NOT NULL, 
mc_patente_camion VARCHAR (7) NOT NULL, 
mc_patente_rampla VARCHAR (7) NOT NULL, 
mc_tramo    VARCHAR (30) NOT NULL, 
mc_fecha_llegada  DATE NOT NULL , 
mc_total_neto  FLOAT NOT NULL , 
mc_iva    FLOAT NOT NULL , 
mc_total_con_iva  FLOAT NOT NULL , 
mc_factura_interna INT NOT NULL, 
mc_observaciones  VARCHAR (100) NOT NULL , 
mc_vigente   CHAR (1) NOT NULL 
) ; 

CREATE TABLE zs_orden_retiro(
or_numero_orden   INT PRIMARY KEY AUTO_INCREMENT, 
or_numero_factura_flete BIGINT NOT NULL, 
or_fecha_actual   DATE NOT NULL, 
or_rampla    VARCHAR (10), 
or_hora_llegada   DATE NOT NULL, 
or_retiro    CHAR (1) NOT NULL, 
or_estado_pago   CHAR (1) NOT NULL, 
or_factura_cliente  BIGINT NOT NULL, 
or_guia_despacho_cliente BIGINT NOT NULL, 
or_cantidad_bultos  INT NOT NULL, 
or_contenido_sin_revisar CHAR (1) NOT NULL , 
or_peso     FLOAT NOT NULL , 
or_volumen    FLOAT NOT NULL , 
or_descripcion_carga  VARCHAR (100), 
or_notas     VARCHAR (100), 
or_vigencia    CHAR (1) NOT NULL,  
per_id     INT NOT NULL, 
mc_numero_manifiesto  INT NOT NULL, 
FOREIGN KEY (per_id) REFERENCES zs_persona(per_id), 
FOREIGN KEY (mc_numero_manifiesto) REFERENCES 
zs_manifiesto_carga(mc_numero_manifiesto) 
) ; 

感謝です!

+1

[MySQLエラー1215の可能性の重複:することはできません外部キー制約を追加](http://stackoverflow.com/questions/16969060/mysql-error-1215-cannot-add-foreign-key-constraint) –

答えて

0

CREATE TABLEステートメントの実行順序がわかれば、参照するテーブルを作成する前にいくつかの外部キーを追加しようとしています。

ソリューションは、あなたのCREATE TABLEステートメントを実行する前に、これらのコマンドを実行することです:

set @foreign_key_checks = @@foreign_key_checks; 
set foreign_key_checks = 0; 

次にあなたがテーブルを作成した後、その設定を元に戻すことができます:

set foreign_key_checks = @foreign_key_checks; 
関連する問題