2012-06-01 3 views
0

mysql을 처음 사용하고 데이터베이스를 생성하는 코드가 & 개입니다. 첫 번째 2 테이블은 잘 생성되지만 위의 오류 (제목 줄)가 표시됩니다. 도와 주실 수 있니?MYSQL - # 1005 - 'dbwms.t_trucks'테이블을 만들 수 없습니다. (errno : 150)

CREATE DATABASE IF NOT EXISTS dbwms DEFAULT CHARACTER SET `utf8`; 

USE dbwms; 

CREATE TABLE IF NOT EXISTS t_truck_types (
f_pk_ma_truck_type SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
f_sa_truck_type CHAR(4) NOT NULL UNIQUE, INDEX(f_sa_truck_type), 
f_truck_length TINYINT 
) ENGINE=InnoDB DEFAULT CHARACTER SET `utf8`; 

CREATE TABLE IF NOT EXISTS t_truck_vendors (
f_pk_ma_truck_vendor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
f_sa_truck_vendor_id SMALLINT UNSIGNED NOT NULL UNIQUE, INDEX(f_sa_truck_vendor_id),  
f_truck_vendor_nickname VARCHAR(12) NOT NULL UNIQUE, INDEX(f_truck_vendor_nickname) 
) ENGINE=InnoDB DEFAULT CHARACTER SET `utf8`; 

CREATE TABLE IF NOT EXISTS t_trucks (
f_pk_ma_truck_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
f_truck_license_plate VARCHAR(15) NOT NULL UNIQUE, INDEX(f_truck_license_plate), 
f_fk_ma_truck_type SMALLINT UNSIGNED NOT NULL, 
f_fk_ma_truck_vendor_id SMALLINT UNSIGNED NOT NULL, 
FOREIGN KEY (f_fk_ma_truck_type) REFERENCES t_truck_types(f_pk_ma_truck_type), 
FOREIGN KEY (f_fk_ma_truck_vendor_id) REFERENCES t_truck_vendors(f_pk_ma_truck_vendor_id) 
) ENGINE=InnoDB DEFAULT CHARACTER SET `utf8`; 

미리 도움을 주셔서 감사합니다.

t_trucks에서 f_fk_ma_truck_typeUNSIGNED로 정의하기 때문이다 sbeeht

+0

이 봐 http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign를 확인하시기 바랍니다 추가 할 수 있습니다 -key-constraints.html, 주로 외래 키 문제 – maxjackie

답변

1

. 기본 키와 외래 키는 모두 같은 유형이어야합니다. 당신은 t_trucks

CREATE TABLE IF NOT EXISTS t_trucks (
f_pk_ma_truck_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
f_truck_license_plate VARCHAR(15) NOT NULL UNIQUE, INDEX(f_truck_license_plate), 
f_fk_ma_truck_type SMALLINT NOT NULL, 
f_fk_ma_truck_vendor_id SMALLINT UNSIGNED NOT NULL, 
FOREIGN KEY (f_fk_ma_truck_type) REFERENCES t_truck_types(f_pk_ma_truck_type), 
FOREIGN KEY (f_fk_ma_truck_vendor_id) REFERENCES t_truck_vendors(f_pk_ma_truck_vendor_id) 
) ENGINE=InnoDB DEFAULT CHARACTER SET `utf8`; 

unsigned을 제거하거나 t_truck_types 선언에

+0

답변 해 주셔서 감사합니다. 매우 도움이되었습니다. – user1429896