2017-10-16 10 views
0

클래스에 쓰는 mySql 쿼리가 있지만 고객 테이블에 오류 1146, 고객 테이블이 없습니다. 다른 모든 문제는 해결했지만 고객 테이블에서 문제가 발생한 위치를 확인할 수 없습니다. 여기에 내 코드 것은 : 내가 뭔가를 보이지 않아요 않는MySql 쿼리는 오류가있는 테이블을 제외한 모든 테이블을 만듭니다.

SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; 
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; 
DROP SCHEMA IF EXISTS PiqueExpenses; 
CREATE SCHEMA IF NOT EXISTS PiqueExpenses DEFAULT CHARACTER SET utf8 ; 

DROP DATABASE IF EXISTS PiqueExpenses; 
CREATE DATABASE IF NOT EXISTS PiqueExpenses DEFAULT CHARACTER SET utf8 ; 

USE PiqueExpenses; 
CREATE TABLE IF NOT EXISTS JobPay (
    pay_rate DOUBLE NOT NULL AUTO_INCREMENT, 
    j_id INT NULL, 
    pay_hrs_worked DOUBLE NULL, 
    job_mileage DOUBLE NULL,  
    pay_per_mile DOUBLE NULL, 
    PRIMARY KEY (pay_rate), 
    INDEX fk_JobPay_Jobs_idx (j_id ASC), 
    CONSTRAINT fk_JobPay_Jobs 
    FOREIGN KEY (j_id) 
    REFERENCES Jobs (job_id) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


USE PiqueExpenses; 
CREATE TABLE IF NOT EXISTS Jobs (
    job_id INT NOT NULL AUTO_INCREMENT, 
    em_id INT NULL, 
    cus_id INT NULL, 
    job_name VARCHAR(45) NULL, 
    job_type VARCHAR(45) NULL, 
    PRIMARY KEY (job_id), 
    INDEX fk_Jobs_Employee_idx (em_id ASC), 
    CONSTRAINT fk_Jobs_Employee 
    FOREIGN KEY (em_id) 
    REFERENCES Employee (emp_id), 
    INDEX fk_Jobs_Customer_idx (cus_id ASC), 
    CONSTRAINT fk_Jobs_Customer 
    FOREIGN KEY (cus_id) 
    REFERENCES Customer (cust_id) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 


USE PiqueExpenses; 
CREATE TABLE IF NOT EXISTS Employee (
    emp_id INT NOT NULL AUTO_INCREMENT, 
    emp_lname VARCHAR(45) NULL, 
    emp_initial VARCHAR(45) NULL, 
    emp_fname VARCHAR(45) NULL, 
    l_id INT NULL, 
    PRIMARY KEY (emp_id), 
    INDEX fk_Employee_Location_idx (l_id ASC), 
    CONSTRAINT fk_Employee_Location 
    FOREIGN KEY (l_id) 
    REFERENCES Customer (loc_id) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

USE PiqueExpenses; 
CREATE TABLE IF NOT EXISTS Customer (
    cust_id INT NOT NULL AUTO_INCREMENT, 
    cust_fname VARCHAR(45) NULL, 
    cust_initial VARCHAR(45) NULL, 
    cust_lname VARCHAR(45) NULL, 
    lo_id INT NULL, 
    PRIMARY KEY (cust_id), 
    INDEX fk_Customer_Location_idx (lo_id ASC), 
    CONSTRAINT fk_Customer_Location 
    FOREIGN KEY (lo_id) 
    REFERENCES Location (loc_id) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

USE PiqueExpenses; 
CREATE TABLE IF NOT EXISTS Location (
    loc_id INT NOT NULL AUTO_INCREMENT, 
    loc_address VARCHAR(45) NULL, 
    loc_city VARCHAR(45) NULL, 
    loc_state VARCHAR(45) NULL, 
    loc_zip VARCHAR(45) NULL, 
    loc_phone_num VARCHAR(45) NULL, 
    PRIMARY KEY (loc_id)) 
ENGINE = InnoDB; 

START TRANSACTION; 
USE PiqueExpenses; 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (32.00, 0001, 4, 48.0, .53); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (29.50, 0002, 3.8, 35.0, .44); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (38.75, 0003, 7.6, 49.0, .48); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (42.00, 0004, 8.9, 21.0, .25); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (31.42, 0005, 3.5, 64.0, .58); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (42.25, 0006, 5.6, 82.0, .57); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (38.95, 0007, 6.7, 57.0, .57); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (31.52, 0008, 4.8, 66.0, .61); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (29.60, 0009, 4.4, 52.0, .49); 
INSERT INTO PiqueExpenses.JobPay (pay_rate, j_id, pay_hrs_worked, 
job_mileage, pay_per_mile) VALUES (32.50, 0010, 6.4, 70.0, .50); 

COMMIT; 

START TRANSACTION; 
USE PiqueExpenses; 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0001, 44201, 22001, 'CCTV', 'Install'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0002, 44202, 22002, 'Network','Install'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0003, 44203, 22003, 'Alarm', 'Time&Mater'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0004, 44204, 22004, 'DigitalMenuBoard', 'Install'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0005, 44205, 22005, 'Telecom', 'Troubleshoot'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0006, 44206, 22006, 'DigitalMenuBoard', 'Install'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0007, 44207, 22007, 'Alarm', 'Troubleshoot'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0008, 44208, 22008, 'Telecom', 'Troubleshoot'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0009, 44209, 22009, 'Network', 'Troubleshoot'); 
INSERT INTO PiqueExpenses.Jobs (job_id, em_id, cus_id, job_name, job_type) 
VALUES (0010, 44210, 22010, 'CCTV', 'Install'); 

COMMIT; 

START TRANSACTION; 
USE PiqueExpenses; 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44201, 'Tom', 'I', 'Butler', 33401); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44202, 'Marty', 'M', 'Tucker', 33402); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44203, 'Tammy', 'T', 'Rivera', 33403); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44204, 'Alicia', 'L', 'Robinson', 33404); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44205, 'Mary', 'J', 'Watson', 33405); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44206, 'Rachel', 'J', 'Owens', 33406); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44207, 'Barb', 'L', 'Wright', 33407); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44208, 'Peter', 'F', 'Parker', 33408); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44209, 'Kathy', 'W', 'Alvarez', 33409); 
INSERT INTO PiqueExpenses.Employee (emp_id, emp_fname, emp_initial, 
emp_lname, l_id) VALUES (44210, 'Frank', 'M', 'Morris', 33410); 

COMMIT; 

START TRANSACTION; 
USE PiqueExpenses; 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22001, 'Fred', 'F', 'Flinstone', 33411); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22002, 'Buford', 'L', 'Tannen', 33412); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22003, 'Yosimite', 'P', 'Sam', 33413); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22004, 'John', 'A', 'Wayne', 33414); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22005, 'James', 'K', 'Hetfield', 33415); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22006, 'Lars', 'P', 'Ulrich', 33416); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22007, 'Kirk', 'Q', 'Hammet', 33417); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22008, 'Robert', 'F', 'Trajillo', 33418); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22009, 'Alfred', 'P', 'Yankovich', 33419); 
INSERT INTO PiqueExpenses.Customer (cust_id, cust_fname, cust_initial, 
cust_lname, lo_id) VALUES (22010, 'Odell', 'X', 'Beckham', 33420); 

COMMIT; 

START TRANSACTION; 
USE PiqueExpenses; 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33401, '7613 Bellflower', 
'Mentor', 'OH', '44060', '1-(440)654-7744'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33402, '2346 15th', 'Akron', 
'OH', '44314', '1-(330)848-9413'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33403, '6915 Giddings', 
'Atwater', 'OH', '44201', '1-(330)358-2026'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33404, '11241 Mahoning', 'North 
Jackson', 'OH', '44451', '1-(330)666-9283'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33405, '685 Deercrest', 
'Wadsworth', 'OH', '44281', '1-(330)954-2209'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33406, '675 Wolf Ledges', 
'Akron', 'OH', '44309', '1-(330)996-9756'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33407, '111 Center', 'Medina', 
'OH', '44256', '1-(330)335-1803'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33408, '222 State', 'Cuyahoga 
Falls', 'OH', '44223', '1-(330)388-6354'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33409, '489 Bridge', 'Brimfield', 
'OH', '44240', '1-(330)321-6223'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33410, '44 Chitauqua', 
'Cleveland', 'OH', '44134', '1-(678)980-0852'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33411, '4123 Anniversary Road', 
'Nashville', 'TN', '37215', '1-(615)995-7744'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33412, '9807 Ruskin Crossing', 
'Bellevue', 'WA', '98008', '1-(425)975-9413'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33413, '39 Montana Parkway', 
'Saint Paul', 'MN', '55166', '1-(651)866-2047'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33414, '3 Westridge Street', 
'Stamford', 'CT', '06905', '1-(203)677-2492'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33415, '659 Homewood Junction', 
'Gary', 'IN', '46406', '1-(219)971-2522'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33416, '86460 Kensington Place', 
'Columbus', 'OH', '43240', '1-(614)282-8239'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33417, '4360 Bluestem Pass', 
'Bradenton', 'FL', '34205', '1-(941)335-5180'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33418, '0178 Hallows Pass', 'San 
Antonio', 'TX', '78265', '1-(210)523-6354'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33419, '1816 Trailsway Alley', 
'Sacramento', 'CA', '94245', '1-(916)618-3467'); 
INSERT INTO PiqueExpenses.Location (loc_id, loc_address, loc_city, 
loc_state, loc_zip, loc_phone_num) VALUES (33420, '72464 Armistice Drive', 
'San Jose', 'CA', '95133', '1-(408)405-1270'); 

COMMIT; 

SELECT * 
FROM JobPay, 
     Jobs, 
     Employee, 
     Customer, 
     Location; 

SELECT * 
FROM Employee 
WHERE emp_initial = 'J'; 

SELECT * 
FROM Jobs 
WHERE job_type = 'Install'; 

SELECT * 
FROM JobPay 
LEFT OUTER JOIN Jobs ON JobPay.j_id = Jobs.job_id 

UNION 

SELECT * 
FROM JobPay 
RIGHT OUTER JOIN Jobs ON JobPay.j_id = Jobs.job_id; 

SELECT * 
FROM Customer 
LEFT OUTER JOIN Location ON Customer.lo_id = Location.loc_id 

UNION 

SELECT * 
FROM Customer 
RIGHT OUTER JOIN Location ON Customer.lo_id = Location.loc_id; 

다시 말하지만, 모든 테이블 및 삽입 유사하지만 아직 고객은 겉으로는 존재하지 않는 설정이다 보인다. 왜 그것이 테이블을 만들거나 존재하지 않는가? 어떤 도움이라도 대단히 감사합니다.

답변

0

Location 테이블이 작성되기 전에 Location 테이블을 참조하는 외래 키를 Customer에 작성하려고 시도했습니다.

성명 SET FOREIGN_KEY_CHECKS=0은 참조 된 상위 테이블의 값이 아직없는 데이터 값을로드 할 수있는 것처럼 유연성을 제공합니다. 순환 참조를 사용하여 데이터를로드 할 수 있습니다.

그러나 테이블이 아직 존재하지 않으면 FK 제약 조건에서 테이블을 참조 할 수 없습니다.

스크립트 마지막에 FK 제약 조건의 모든 정의를 연기하는 것이 일반적입니다. ALTER TABLE을 사용하여 FK 제약 조건을 모두 생성 한 후 테이블에 추가합니다.

0

아직 존재하지 않는 것으로 링크를 만듭니다. thats 위치 테이블 ...

+0

오류를 수정하지 않았습니다. 같은 오류가 발생합니다. –