2017-01-03 11 views
0

MAC Sierra 10.12.2 mariaDB Vers 10.1.19 Положения Construct вырезаны/вставляются из окна Querious Table Syntax.mariaDB внешний ключ unformed - varchar не подписанный/неподписанный выпуск

Первая таблица:

CREATE TABLE `USAStates` (
    `state_id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT, 
    `state_abbrev` varchar(6) NOT NULL DEFAULT '', 
    `electoral_votes` smallint(2) DEFAULT '0', 
    `fed_reg` smallint(2) DEFAULT '0', 
    `econ_anal_reg` varchar(128) DEFAULT NULL, 
    `FRB_district` varchar(128) DEFAULT NULL, 
    PRIMARY KEY (`state_id`,`state_abbrev`) 
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8; 

Вторая таблица:

CREATE TABLE `FRBCommentary` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `state_abbrev` varchar(6) NOT NULL DEFAULT '', 
    `FRB_district_rem` longtext, 
    PRIMARY KEY (`id`,`state_abbrev`) 
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8; 

Результаты заявления ALTER из командной окна; те же результаты, используя инструменты Querious:

MariaDB [ESHOP]> 
    ALTER TABLE FRBCommentary 
    ADD CONSTRAINT FOREIGN KEY (state_abbrev) 
    REFERENCES USAStates (state_abbrev); 

ERROR 1005 (HY000): Невозможно создать таблицу eshop. #sql-74b_41 (ошибка: 150 «ограничение внешнего ключа неправильно сформировано») MariaDB [ESHOP]>

Используется очень компетентны в MS Access ... года пытаются узнать реальную вещь.

+0

Предлагайте вам избавиться от 'id' и сделать' state_abbrev' 'ПЕРВИЧНЫЙ КЛЮЧ, сам по себе. –

ответ

0

Вам нужен индекс в столбце с ссылкой.

ALTER TABLE USAStates ADD INDEX (state_abbrev); 
+0

Спасибо, это сработало! –