簡體   English   中英

將數據插入表中時出現MySQL錯誤1062和1452

[英]MySQL error 1062 and 1452 while inserting data into tables

嘗試在mysql上學習課程,跟隨視頻和文本。 從我的想法來看,我一直在完美地遵循它,但是當我嘗試向表中插入數據時遇到了很多錯誤。

這是我的代碼:

-- 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);

關於為什么我應該由於插入數據而出現錯誤,有什么特別明顯的東西嗎?

這是我具體出現錯誤的地方:

在此處輸入圖片說明 許多錯誤是說重復的錯誤代碼1062錯誤代碼1452

您應該一次發出一個查詢-這樣您將看到錯誤出現的位置。

錯誤#1062可能是由於主鍵的唯一性。 表中已存在您要插入的ID值。 嘗試截斷整個表並再次運行腳本。

嘗試插入“ Products表時,可能會出現錯誤#1452。 這是因為您具有外鍵約束,並且先前在Categories表上發布的insert語句失敗。

注意:您不需要為每一行都發出插入語句。 相反,您可以像這樣將它們分組:

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');

在創建Products表時,您還缺少對Suppliers(SupplierID)的外鍵約束,我猜應該存在。

對您來說,一個好的建議是對將為您生成值的主鍵使用AUTO_INCREMENT 在此處查看有關此主題的更多信息。 這將要求您從插入語句中刪除主鍵列和值,從而使它們更短,而不必擔心每次手動增加它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM