Синтаксическая ошибка User_id не найдена в справке таблицы! - PullRequest
0 голосов
/ 05 апреля 2011

Sql не позволяет мне создавать эти таблицы из-за синтаксической ошибки, может кто-то мне помочь.

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

Ответы [ 3 ]

1 голос
/ 05 апреля 2011

У вас есть циклическое отношение FK:

Users имеет Interests(id) как FK, а Interests имеет user(id) как FK.

Вам не нужно ЛИБО из них, так как у вас есть таблица user_intrest, чтобы связать их!

У вас также есть несколько опечаток с именами таблиц, таких как intrests и intrest.

Кроме того, вы должны сделать оба поля User в Friendships FK равными Users, я не уверен, почему вам нужно третье, несвязанное Users_Id поле.

1 голос
/ 05 апреля 2011

Первые (из многих) синтаксических ошибок, которые у вас есть, в

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

Я бы предложил:

Но СТОП! Не просто копировать-вставить. Попробуйте сами понять, почему MySQL выдает это сообщение об ошибке: Key column 'intrest_id' doesn't exist in table, разве вы не получаете ошибку?

Попробуйте сначала исправить эту ошибку. Что ты должен делать? Добавьте поле intrest_id в таблицу users, а не просто объявите его как FOREIGN KEY. (Это бесполезное поле в конце, но все равно делайте это).

Затем повторите запрос и попытайтесь исправить следующую ошибку. По одному. Если вы действительно застряли где-то, ну, вы знаете сайт, чтобы задавать вопросы:)

Итак, старайтесь исправлять ошибки одну за другой, пока у вас не появится скрипт, который работает без каких-либо ошибок. Вы узнаете гораздо больше, чем просто копируете и вставляете любой ответ.

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)
);
1 голос
/ 05 апреля 2011
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) );

Для таблицы интересов, где определен столбец users_id?Определения столбцов для таблицы user_interest?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...