私はプロジェクトのスキーマで作業しています。私はローカルホストにインポートしようとしています。情報をデータベースからWebページにプッシュするクエリ。 #1215 - Cannot add foreign key constraint
エラーが発生しました。これは、外部キーとしてcities(city_id)
の使用に関係しています。私は問題が何であるかわからない、彼らは同じデータ型(INT
)であり、city_id
はcities
テーブルの主キーです。私はここで人を困らせているし、私はここに誰かが手を貸してくれることを望んでいる。私は理由がわかりません。外部キー制約エラーを追加できません
EDITED:私はこれを動作させましたが、それは作業表の下に貼り付ける注文表がありません。
DROP TABLE IF EXISTS cities;
-- Table for storing cities
create table cities (
city_id INT(100) NOT NULL AUTO_INCREMENT,
city_name VARCHAR(32),
PRIMARY KEY(city_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS drivers;
-- table for Drivers registered in lyft database
create table drivers (
driver_id INT(100) NOT NULL AUTO_INCREMENT,
fname VARCHAR(32),
lname VARCHAR(32),
address VARCHAR(32),
contactnumber VARCHAR(32),
driver_city INT(100),
PRIMARY KEY(driver_id),
FOREIGN KEY (driver_city) REFERENCES cities(city_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS cars;
-- Table for storing cars information in lyft
create table cars (
car_id INT(100) NOT NULL AUTO_INCREMENT,
car_name VARCHAR(32),
car_type VARCHAR(32),
car_model VARCHAR(32),
car_licencenumber VARCHAR(32),
PRIMARY KEY(car_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS customers;
-- Table for storing customers using lyft
create table customers (
c_id INT(100) NOT NULL AUTO_INCREMENT,
c_fname VARCHAR(32),
c_lname VARCHAR(32),
c_city INT(100),
PRIMARY KEY (c_id),
FOREIGN KEY (c_city) REFERENCES cities(city_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS owns;
-- Table stores which drivers are having which cars
create table owns (
driver INT(100),
car INT(100),
PRIMARY KEY (driver,car),
FOREIGN KEY (driver) REFERENCES drivers(driver_id) ON DELETE CASCADE,
FOREIGN KEY (car) REFERENCES cars(car_id) ON DELETE CASCADE
)ENGINE=InnoDB;
以下である私は、データベースに追加することはできません。表:
Static analysis:
2 errors were found during analysis.
An expression was expected. (near "ORDER" at position 21)
Unrecognized keyword. (near "ORDER" at position 21)
SQL query:
DROP TABLE IF EXISTS ORDER
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER' at line 1
FINAL EDIT:私は最終的に考え出し
DROP TABLE IF EXISTS order;
-- Table stores which drivers are driving a customer
create table order (
driver INT(100),
customer INT(100),
city INT(100),
PRIMARY KEY (driver, customer, city),
FOREIGN KEY (driver) REFERENCES drivers(driver_id),
FOREIGN KEY (customer) REFERENCES customers(c_id),
FOREIGN KEY (city) REFERENCES cities(city_id)
)ENGINE=InnoDB;
phpmyadmin
を経由して、それを追加しようとすると、私は次のエラーを取得しますそれは、私の問題は、order
は、エラーを投げていたので、mysqlの予約語/キーワードです。私はそれをに変更し、すべてが順調です。誰かが私と同じトラブルに遭遇した場合、私は最終的なスキーマを投稿します。エラーCannot resolve table name
から
DROP TABLE IF EXISTS cities;
-- Table for storing cities
create table cities (
city_id INT(100) NOT NULL AUTO_INCREMENT,
city_name VARCHAR(32),
PRIMARY KEY(city_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS drivers;
-- table for Drivers registered in lyft database
create table drivers (
driver_id INT(100) NOT NULL AUTO_INCREMENT,
fname VARCHAR(32),
lname VARCHAR(32),
address VARCHAR(32),
contactnumber VARCHAR(32),
driver_city INT(100),
PRIMARY KEY(driver_id),
FOREIGN KEY (driver_city) REFERENCES cities(city_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS cars;
-- Table for storing cars information in lyft
create table cars (
car_id INT(100) NOT NULL AUTO_INCREMENT,
car_name VARCHAR(32),
car_type VARCHAR(32),
car_model VARCHAR(32),
car_licencenumber VARCHAR(32),
PRIMARY KEY(car_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS customers;
-- Table for storing customers using lyft
create table customers (
c_id INT(100) NOT NULL AUTO_INCREMENT,
c_fname VARCHAR(32),
c_lname VARCHAR(32),
c_city INT(100),
PRIMARY KEY (c_id),
FOREIGN KEY (c_city) REFERENCES cities(city_id)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS owns;
-- Table stores which drivers are having which cars
create table owns (
driver INT(100),
car INT(100),
PRIMARY KEY (driver,car),
FOREIGN KEY (driver) REFERENCES drivers(driver_id) ON DELETE CASCADE,
FOREIGN KEY (car) REFERENCES cars(car_id) ON DELETE CASCADE
)ENGINE=InnoDB;
DROP TABLE IF EXISTS orders;
-- Table stores which drivers are driving a customer
create table orders (
driver INT(100),
customer INT(100),
city INT(100),
PRIMARY KEY (driver, customer, city),
FOREIGN KEY (driver) REFERENCES drivers(driver_id),
FOREIGN KEY (customer) REFERENCES customers(c_id),
FOREIGN KEY (city) REFERENCES cities(city_id)
)ENGINE=InnoDB;
どのエンジンをお使いですか?エラーは同じです:https://stackoverflow.com/questions/18391034/cannot-resolve-table-name-close-to –
@LioraHaydont明らかに、InnoDBエンジン – Sherry
@LioraHaydont申し訳ありません、私は自分のスキーマを更新しましたテーブルごとにEngine、Charset、およびCollateを表示します。 –