2016-08-27 5 views
0

동영상 및 텍스트에 따라 mysql에서 과정을 수행하려고합니다. 내가 생각한 바에 따르면 완벽하게 뒤쫓아 왔지만 테이블에 데이터를 삽입하려고 할 때 많은 오류가 발생합니다. 데이터를 삽입하는 형태로 왜 점점되어야 오류로뿐만 bleedingly 분명 눈에 띄는 아무것도테이블에 데이터를 삽입하는 중 MySQL 오류 1062 및 1452

-- MyExercises 

CREATE DATABASE MyExercises; 

USE MyExercises; 

CREATE TABLE Categories 
     (CategoryID INT NOT NULL, 
     CategoryName VARCHAR(20) NOT NULL, 
     Description TEXT NULL, 
PRIMARY KEY (CategoryID)) 
ENGINE = InnoDB; 

SHOW COLUMNS FROM Categories; 
DESC Categories; 

CREATE TABLE Suppliers 
     (City VARCHAR(20) NULL, 
     CompanyName VARCHAR(30) NOT NULL, 
     SupplierID INT NOT NULL, 
PRIMARY KEY (SupplierID)) 
ENGINE = InnoDB; 

    CREATE TABLE Products 
     (ProductID INT NOT NULL, 
     ProductName VARCHAR(40) NOT NULL, 
     CategoryID INT NULL, 
     SupplierID INT NULL, 
     UnitPrice DECIMAL(5,2) NULL, 
     UnitsInStock SMALLINT NULL, 
PRIMARY KEY (ProductID), 
FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID)) 
ENGINE = INNODB; 

INSERT INTO Categories (CategoryID, CategoryName, Description) 
VALUES (1, 'Beverages', 'Soft drinks, coffees, teas, beers, and ales'); 

INSERT INTO Categories (CategoryID, CategoryName, Description) 
VALUES (2, 'Condiments', 'Sweet and savory sauces'); 

INSERT INTO Categories (CategoryID, CategoryName, Description) 
VALUES (3, 'Confections', 'Desserts, candies, and sweet breads'); 

INSERT INTO Categories (CategoryID, CategoryName, Description) 
VALUES (4, 'Dairy Products', 'Cheese, Milk, Cream'); 

INSERT INTO Suppliers (SupplierID, CompanyName, City) 
VALUES (1, 'Exotic Liquids', 'London'); 

INSERT INTO Suppliers (SupplierID, CompanyName) 
VALUES (2, 'New Orleans Cajun Delights'); 

INSERT INTO Suppliers (SupplierID, CompanyName, City) 
VALUES (3, 'Grandma Kelly''s Homestead', 'Adelaide'); 

INSERT INTO Suppliers (SupplierID, CompanyName) 
VALUES (4, 'Tokyo Traders'); 

INSERT INTO Products (ProductID, ProductName, SupplierID, CategoryID, UnitPrice, UnitsInStock) 
VALUES (1, 'Chai', 1, 1, 18, 39); 

INSERT INTO Products (ProductID, ProductName, SupplierID, UnitPrice, UnitsInStock) 
VALUES (2, 'Chang', 1, 19, 17); 

INSERT INTO Products (ProductID, ProductName, CategoryID, UnitPrice, UnitsInStock) 
VALUES (3, 'Ani Seed Syrup', 2, 10, 13); 

INSERT INTO Products (ProductID, ProductName, SupplierID, CategoryID, UnitPrice) 
VALUES (4, 'Chef Anton''s Cajun Seasoning', 2, 2, 22); 

INSERT INTO Products (ProductID, ProductName, SupplierID, CategoryID, UnitsInStock) 
VALUES (5, 'Chef Anton''s Gumbo Mix', 2, 2, 0); 

INSERT INTO Products (ProductID, ProductName, SupplierID, CategoryID) 
VALUES (6, 'Grandma''s Boysenberry Spread', 3, 2); 

INSERT INTO Products (ProductID, ProductName, SupplierID, CategoryID, UnitPrice, UnitsInStock) 
VALUES (7, 'Uncle Bob''s Organic Dried Pears', 5, 4, 30, 15); 

INSERT INTO Products (ProductID, ProductName, SupplierID, CategoryID, UnitPrice, UnitsInStock) 
VALUES (8, 'Northwood''s Cranberry Sauce', 4, 5, 40, 6); 

있습니까 : 여기

내 코드? 오류의

enter image description here 많은 일들이 오류 코드 중복을위한 1062오류 코드 1452 말할 수 있습니다 : 내가 특별히 오류를 얻고 곳에있다

이다.

+0

테이블을 비우고 다시 시도하십시오. 이미 데이터베이스에 키 값이 있습니다. 또한 id를 auto_increment로 설정하는 것을 고려하십시오. –

+0

시작을 위해 테이블의 소문자 버전을 시도하십시오 –

+0

위에서 제안한 것처럼 정리를 시작하면 외래 키 제약 조건을 존중하도록 마지막 'insert' 문의'CategoryID '값을 수정해야합니다. – sstan

답변

1

한 번에 하나씩 쿼리를 실행해야합니다. 이렇게하면 오류가 나타나는 위치가 표시됩니다.

오류 # 1062는 아마도 기본 키의 고유성 때문일 수 있습니다. 삽입하려는 ID가있는 값은 이미 테이블에 있습니다. 전체 테이블을 자르고 스크립트를 다시 실행하십시오.

Products 테이블에 삽입하려고하면 오류 # 1452가 표시 될 수 있습니다. 이는 외래 키 제약 조건이 있고 Categories 테이블에 발행 된 이전 insert 문이 실패했기 때문입니다.

참고 : 모든 행에 insert 문을 실행할 필요는 없습니다. 이 같은 대신에, 당신이 할 수있는 그룹을 : 나는 존재한다 생각 Products 테이블을 만드는 동안

INSERT INTO Categories (CategoryID, CategoryName, Description) 
    VALUES 
    (1, 'Beverages', 'Soft drinks, coffees, teas, beers, and ales'), 
    (2, 'Condiments', 'Sweet and savory sauces'), 
    (3, 'Confections', 'Desserts, candies, and sweet breads'), 
    (4, 'Dairy Products', 'Cheese, Milk, Cream'); 

는 또한 Suppliers(SupplierID)에 외래 키 제약 조건을 놓치고있어.

값을 생성하는 기본 키에 AUTO_INCREMENT을 사용하는 것이 좋습니다. 주제에 대한 자세한 내용은 here을 확인하십시오. 이렇게하면 삽입 문에서 기본 키 열과 값을 제거해야하므로 더 짧게 만들 수 있으며 항상 매번 증분하는 것에 대해 걱정할 필요가 없습니다.

+0

도움을 주셔서 감사합니다. 나는 그런 것을 추가 할 수 있다는 것을 몰랐다! 그렇다면 오류를 현시점에서 해결하는 가장 좋은 방법은 무엇입니까 (간단히 말하십시오). – purplemonkeydishwasher

+0

간단히 말해서 모든 것을 내 게시물에 포함 시켰습니다. 테이블을 비우고 값을 다시 입력하십시오. –

+0

고마운 친구, 나는 그것을 줄 것이다 :) – purplemonkeydishwasher