开发者

Syntax error User_id not found in table help !

Sql wont let me create these table because of a syntax error can someone help me.

drop table users;
drop table intrest;
drop table friendships;

create table users(
id INT,
Fname char(15),
Lname char开发者_运维知识库(15),
email char(20),
street char(15),
state char(2),
zip INT,
age INT,
gender char (2),
phone INT,
User_password char(15),
primary key (id),
foreign key (intrest_id) references intrest(id)
);

create table Intrests(
id INT,
description char(30),
Primary key (id),
foreign key (users_id) references users(id)
);

create table User_intrest(
foreign key (users_id) references users(id),
foreign key (intrest_id) references intrest(id)
);


create table friendships(
User_1_id INT,
User_2_id INT,
description Char(20),
foreign key (users_id) references users(id)
);


create table Intrests( id INT, description char(30), 
                       Primary key (id), 
                       foreign key (users_id) references users(id) );

create table User_intrest( foreign key (users_id) references users(id), 
                           foreign key (intrest_id) references intrest(id) );

For interests table, where is the column users_id defined? Column definitions for user_interest table?


You have a cyclical FK relationship:

Users has Interests(id) as a FK, and Interests has user(id) as a FK.

You don't need EITHER of these since you have a user_intrest table to link them!

You also have several typos with table names, like intrests and intrest.

Also, you should make both your User fields in Friendships be FK to Users, I'm not sure why you want a third, unrelated Users_Id field.


The first (of many) syntax errors you have is in

create table users(
...
primary key (id),
foreign key (intrest_id) references intrest(id)    <--- there is no table intrest
);

I would suggest:

But STOP! Don't just copy-paste. Try yourself to see why MySQL gives you that error message: Key column 'intrest_id' doesn't exist in table, isn't the error you get?

Try to first fix that error. What do you have to do? Add an intrest_id field in table users, not just declare it as FOREIGN KEY. (It's not a useful field to have in the end, but do it anyway).

Then rerun your query and try to fix next error. One by one. If you realy get stuck somewhere, well, you know a site to ask questions :)

So, try to fix errors one by one, until you have a script that is running without any errors at all. You'll have learned much more than simply copying and pasting any answer.

CREATE TABLE Users(
  id INT,
  Fname char(15),
  Lname char(15),
  email char(50),              <-- 20 is too small for emails
  street char(15),
  state char(2),
  zip INT,
  age INT,
  gender char (2),
  phone char(20),              <-- phone should be char, not INT
  user_password char(15),
PRIMARY KEY (id)
);                       <-- You don't really need a foreign key to Interests,
                         <-- that's why you have the User_interest "middle" table 

CREATE TABLE Interests(
  id INT,
  description char(30),
PRIMARY KEY (id)               
);                           <-- You don't really need a foreign key to Users,
                             <-- for the same reasons. 

CREATE TABLE User_interest(
  user_id INT,                                 <-- These foreign keys are
  interest_id INT,                             <-- good, but you need to 
                                               <-- declare them as fields, too
PRIMARY KEY (user_id, interest_id),         <-- It's good if all tables have PK
FOREIGN KEY (user_id) REFERENCES Users(id), 
FOREIGN KEY (interest_id) REFERENCES Interests(id)
);

CREATE TABLE Friendships(
  user_1_id INT,
  user_2_id INT,
  description char(20),
PRIMARY KEY (user_1_id, user_2_id),
FOREIGN KEY (user_1_id) REFERENCES Users(id),
FOREIGN KEY (user_2_id) REFERENCES Users(id)
);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜