2014-03-11 4 views
0

Я намереваюсь создать таблицу с двумя столбцами (bus_id, bus_passengers). Bus_id будет основным ключом и будет внешним ключом из другой созданной таблицы, которая называется «beacap_locationLog», column node_id.Номер ошибки 150 во внешнем ключе

Это код, который я написал (MySql):

CREATE TABLE Bus(
    bus_id INT (10) UNSIGNED NOT NULL, 
    bus_passengers INT, 
    PRIMARY KEY (bus_id), 
    FOREIGN KEY (bus_id) REFERENCES beacap_locationLog(node_id) 
); 

Это дает мне эту ошибку:

#1005 - Can't create table 'pei.Bus' (errno: 150)

Я не знаю, в чем проблема.

+0

Сообщение структура 'beacap_locationLog'. Err 150, как правило, соответствует несоответствию типа между столбцом и номером, который он ссылается. Они должны точно соответствовать. Для столбца не всегда есть смысл как первичного ключа, так и внешнего ключа, хотя ... –

+1

Взгляните на эту [ссылку] [1] - проблема действительно похожа. [1]: http://stackoverflow.com/questions/1457305/mysql-creating-tables-with-foreign-keys-giving-errno-150 – user3240544

ответ

0

Не может быть основной + внешний ключ на одном и том же! колонка с таким же названием

Shoul быть таким!
-see я добавил новый столбец !!

CREATE TABLE Bus(
     bus_id INT (10) UNSIGNED NOT NULL, 
     bus_passengers INT, 
     node_id_fk int, 
     PRIMARY KEY (bus_id), 
     FOREIGN KEY (node_id_fk) REFERENCES beacap_locationLog(node_id) 
    ); 
  • также node_id_fk и node_id должны иметь тот же тип!

Ok см полный пример:

mysql> create table beacap_locationLog(
    -> node_id int 
    ->); 

Query OK, 0 rows affected (0.26 sec) 

mysql> CREATE TABLE Bus(
    ->  bus_id INT (10) UNSIGNED NOT NULL, 
    ->  bus_passengers INT, 
    ->  node_id_fk int, 
    ->  PRIMARY KEY (bus_id), 
    ->  FOREIGN KEY (node_id_fk) REFERENCES beacap_locationLog(node_id) 
    -> ); 
Query OK, 0 rows affected (0.03 sec) 

mysql> desc beacap_locationLog; 
+---------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+---------+---------+------+-----+---------+-------+ 
| node_id | int(11) | YES |  | NULL |  | 
+---------+---------+------+-----+---------+-------+ 
1 row in set (0.00 sec) 

mysql> desc Bus; 
+----------------+------------------+------+-----+---------+-------+ 
| Field   | Type    | Null | Key | Default | Extra | 
+----------------+------------------+------+-----+---------+-------+ 
| bus_id   | int(10) unsigned | NO | PRI | NULL |  | 
| bus_passengers | int(11)   | YES |  | NULL |  | 
| node_id_fk  | int(11)   | YES | MUL | NULL |  | 
+----------------+------------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec) 

mysql> 

TBL Bus определение

mysql> show create table Bus\G 
      Table: Bus 
    Create Table: CREATE TABLE Bus (
     bus_id int(10) unsigned NOT NULL, 
     bus_passengers int(11) default NULL, 
     node_id_fk int(11) default NULL, 
     PRIMARY KEY (bus_id), 
     KEY node_id_fk (node_id_fk) 
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 
    1 row in set (0.01 sec) 
Смежные вопросы