2017-03-01 2 views
1
drop table if exists Users; 
drop table if exists Item; 
drop table if exists Bid; 
drop table if exists Category; 

create table Users (
    userID varchar(200), 
    rating integer, 
    location varchar(255), 
    country varchar(150), 
    PRIMARY KEY(userID) 
); 

create table Item (
    itemID integer, 
    name varchar(100), 
    currently float, 
    buy_price float, 
    first_bid float, 
    started timestamp, 
    ends timestamp, 
    userID varchar(200), 
    description varchar(255), 
    PRIMARY KEY(itemID), 
    FOREIGN KEY (userID) REFERENCES Users(userID) 
); 

create table Bid (
    itemID integer, 
    userID varchar(200), 
    time varchar(180), 
    amount float, 
    PRIMARY KEY(itemID,time), 
    FOREIGN KEY (userID) REFERENCES Users(userID), 
    FOREIGN KEY (itemID) REFERENCES Item(itemID) 
); 

create table Category(
    itemID integer, 
    categoryID varchar(220), 
    PRIMARY KEY(itemID,categoryID), 
    FOREIGN KEY (itemID) REFERENCES Item(itemID) 
); 

klyu라는 데이터베이스가 있습니다. 내가 그러나, 나는 어떤 남자가 강하가 실패한 후 SHOW 엔진 INNODB 상태 사용을 통해이를 확인할 말을 보았다mysql : ERROR 1217 (23000) : 부모 행을 삭제하거나 업데이트 할 수 없습니다. 외래 키 제약 조건이 적용되지 않습니다.

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails 
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails 
Query OK, 0 rows affected (0.00 sec) 

Query OK, 0 rows affected (0.17 sec) 

ERROR 1050 (42S01): Table 'Users' already exists 
ERROR 1050 (42S01): Table 'Item' already exists 
Query OK, 0 rows affected (0.03 sec) 

Query OK, 0 rows affected (0.02 sec) 

source create.sql 

는 MySQL의에서, 그것은 반환 실행하면 위 create.sql라는 이름의 파일이있다, 내가 이걸 실행할 때 오류 1227 (42000) : 액세스가 거부되었습니다; 이 작업에 대한 PROCESS 권한이 필요합니다.

매우 신중하게 확인하고 외래 키의 사용 설명서를 읽었지만 문제가있는 곳을 여전히 찾을 수 없습니다.

+0

사용자 ID를 외래 키로 사용하여 테이블 항목 및 참조를 만들고 사용자 테이블을 아직 만들지 않으면이 오류가 발생합니다. 스크립트를 재정렬해야합니다. 아래의 답변을 확인하십시오. –

+0

질문에 대한 답변이 있으면 답변을 표시하십시오. –

+0

죄송합니다. 버튼을 표시 할 위치를 알려 주실 수 있습니까? 감사합니다 –

답변

1

사용자 ID를 외래 키로 사용하여 테이블 항목 및 참조를 만들고 사용자 테이블을 아직 만들지 않으면이 오류가 발생합니다. 이것을 참조하십시오 - MySQL - FOREIGN KEY Constraints Documentation:

스크립트를 재정렬해야합니다.

drop table if exists Item; 
drop table if exists Users; 
drop table if exists Bid; 
drop table if exists Category; 

create table Users (
    userID varchar(200), 
    rating integer, 
    location varchar(255), 
    country varchar(150), 
    PRIMARY KEY(userID) 
) ENGINE=INNODB; 

create table Item (
    itemID integer, 
    name varchar(100), 
    currently float, 
    buy_price float, 
    first_bid float, 
    started timestamp, 
    ends timestamp, 
    userID varchar(200), 
    description varchar(255), 
    PRIMARY KEY(itemID), 
    FOREIGN KEY (userID) REFERENCES Users(userID) 
) ENGINE=INNODB; 


create table Bid (
    itemID integer, 
    userID varchar(200), 
    time varchar(180), 
    amount float, 
    PRIMARY KEY(itemID,time), 
    FOREIGN KEY (userID) REFERENCES Users(userID), 
    FOREIGN KEY (itemID) REFERENCES Item(itemID) 
) ENGINE=INNODB; 

create table Category(
    itemID integer, 
    categoryID varchar(220), 
    PRIMARY KEY(itemID,categoryID), 
    FOREIGN KEY (itemID) REFERENCES Item(itemID) 
) ENGINE=INNODB;