MySQL таблица не создает ошибку # 1064 - PullRequest
1 голос
/ 31 марта 2012

Вот мой sql:

CREATE TABLE companyprinciple {
userid INT, 
FOREIGN KEY (userid) REFERENCES user(id) ON DELETE CASCADE
}ENGINE=INNODB;

и вот ошибка, которую я получаю:

#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 '{
userid INT, 
FOREIGN KEY (userid) REFERENCES user(id) ON DELETE CASCADE
}ENG' at line 1

к сожалению, большая часть моего опыта в программировании БД относится к postgreSQL, и внешние ключи там работают намного лучше, чем кажется.

РЕДАКТИРОВАТЬ: хорошо, поэтому первая проблема заключалась в том, что мои глаза были закрыты и {} должно быть (), но теперь я получаю новую ошибку

#1005 - Can't create table 'ourhoursdb.companyprinciple' (errno: 150)

вот полный ddl.sql (... другие столбцы, хотя в этой таблице все в порядке)

CREATE SCHEMA OurHoursDB;
USE OurHoursDB;

CREATE TABLE User (
id SERIAL NOT NULL PRIMARY KEY,
...

) ENGINE=INNODB;

CREATE TABLE companyprinciple (
userid INT, 
FOREIGN KEY (userid) REFERENCES user(id) ON DELETE CASCADE
)ENGINE=INNODB;

Ответы [ 2 ]

0 голосов
/ 31 марта 2012
CREATE TABLE companyprinciple (
  userid INT, 
  FOREIGN KEY (userid) REFERENCES user(id) ON DELETE CASCADE
) ENGINE=INNODB;
0 голосов
/ 31 марта 2012

Используйте пару круглых скобок (). НЕ кудрявые {}.

Также убедитесь, что вы создали user таблицу со столбцом id с точно такого же типа сначала.

...