2013-10-06 21 views
12

Verilerimi her ne zaman tblorder'a girmeyi denediğimde # 1054 - Hatalı alan 'FK_Customer_ID' hata mesajını 'alan listesinden' aldım. Kodumu kapatmayı denedim ve bunu yaparken FK_Customer_ID ve OrderQuantity için hatanın tekrarlandığını, FK_DVD_ID ise tek veri girişlerini alacağını gördüm. Tabloyu düşürmeyi ve yeniden yaratmayı denedim, veritabanını bıraktım ve yeniden yarattım ama hiçbir şey işe yaramıyor. Kodumun yazımla birlikte doğru olduğunu söyleyebildiğim kadarıyla gerçekten sıkışıp kaldım.MySQL hatası # 1054 - 'Alan Listesi'nde Bilinmeyen sütun'

CREATE TABLE tblcustomer 
(
Customer_ID INT AUTO_INCREMENT NOT NULL, 
FirstName VARCHAR(50) NOT NULL, 
LastName VARCHAR(50) NOT NULL, 
Age INT NOT NULL, 
PRIMARY KEY (Customer_ID) 
); 

FK_DVD_ID ele alıyor - -

Benim tblorder ele alıyor

CREATE TABLE tblorder 
( 
Order_ID INT AUTO_INCREMENT NOT NULL, 
FK_Customer_ID INT NOT NULL, 
FK_DVD_ID INT NOT NULL,  
OrderDate DATETIME NOT NULL DEFAULT NOW(), 
OrderQantity INT NOT NULL, 
PRIMARY KEY (Order_ID),  
FOREIGN KEY (FK_Customer_ID) REFERENCES tblcustomer (Customer_ID), 
FOREIGN KEY (FK_DVD_ID) REFERENCES tbldvd (PK_ID) 
); 

Ben IS-

INSERT INTO tblorder 
(FK_Customer_ID, FK_DVD_ID, OrderQuantity) 
VALUES 
(1, 3, 2), 
(1, 5, 1), 
(1, 10, 4), 
(1, 15, 3), 
(2, 5, 4), 
(2, 17, 3), 
(3, 15, 1), 
(3, 16, 1), 
(3, 17, 1); 

FK_Customer_ID koymak için çalışıyorum veri de öyledir

CREATE TABLE tblDVD 
(
PK_ID INT AUTO_INCREMENT NOT NULL, 
Title VARCHAR(100) NOT NULL, 
DIrector VARCHAR(100) NOT NULL, 
Genre VARCHAR(40) NOT NULL, 
dvd_Year YEAR NOT NULL, 
Price FLOAT(2) NOT NULL, 
Quantity INT NOT NULL, 
PRIMARY KEY (PK_ID) 
); 

A2 hesaplama dersinde bana yardımcı olacağından, düzeltme konusunda yardımcı olacak her şey çok takdir edilecektir!

+0

Yabancı anahtar ihlalleri de dahil olmak üzere masalarınızı oluşturmak ve sahip olduklarınızı karşılaştırmak için phpmyadmin kullanın. – Tarik

cevap

19

OrderQuantity sütununda bir hata var. INSERT deyiminde "OrderQuantity" ve tablo tanımında "OrderQantity" olarak adlandırılmıştır.

Ayrıca, OrderDate öğesinde NOW() varsayılan değeri olarak kullanabileceğinizi düşünmüyorum. Aşağıdaki kullanmayı deneyin:

OrderDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 

Example Fiddle

1

bu hata da vardı.

Mysql çalışma tezgahında çalışıyorum. Değerleri verirken "" içinde olması gerekiyor. Bu benim için çözdü.