2014-02-16 2 views
1

У меня возникли трудности с получением внешнего ключа в столбце VARCHAR.MySql/Cloudbees VARCHAR as ForeignKey

В идеале я хотел бы иметь его как составной FK (как вы можете видеть из моей попытки добавить его).

Локально работает этот скрипт на MySQL 5.6 Я получаю ошибку # 1215 При запуске сценария на CloudBees я получаю заблуждаться 150

Я видел другие вопросы здесь по этому вопросу о типах данных, которые точно так же, я проверил это, как вы можете видеть из сценария.

/* Start of REGION table */ 

CREATE TABLE REGION (
    ID INTEGER NOT NULL AUTO_INCREMENT,   /* Unique Identifier */ 
    RORDER INTEGER,        /* Order to be displayed by (currently unused) */ 
    LANG VARCHAR(3) DEFAULT 'en' ,     /* Language of this entry */ 
    NAME VARCHAR(30) NOT NULL,     /* Region Name */ 
    DESCR VARCHAR(50) DEFAULT '' NOT NULL, /* Region Desc */ 

    ACTIVE INTEGER DEFAULT '1' NOT NULL,  /* Is item active or not */ 
    CDATE TIMESTAMP DEFAULT 0,     /* Create Date */ 
    MODDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,    /* Last Update Date */ 
    INSUSER VARCHAR(20) DEFAULT 'SYSTEM' NOT NULL,         /* User that inserted this entry */ 
    MODUSER VARCHAR(20),       /* User that last modified this entry */ 

    PRIMARY KEY(id) 
) engine InnoDB; 

COMMIT; 

ALTER TABLE REGION ADD CONSTRAINT UNIQUE (LANG, NAME); 

/* End of REGION table */ 

/* Start of LOCATION table */ 

CREATE TABLE LOCATION (
    ID INTEGER NOT NULL AUTO_INCREMENT,   /* Unique Identifier */ 
    REGIONNAME VARCHAR(30) NOT NULL,    /* FK - REGION.ID */ 
    LORDER INTEGER,        /* Order to be displayed by (currently unused) */ 
    NAME VARCHAR(30) DEFAULT '' NOT NULL,  /* Location Name (FK Key) */ 
    LANG VARCHAR(3) DEFAULT 'en' ,     /* Language of this entry */ 
    DESCR VARCHAR(50) DEFAULT '' NOT NULL, /* Location Desc */ 

    ACTIVE INTEGER DEFAULT '1' NOT NULL,  /* Is item active or not */ 
    CDATE TIMESTAMP DEFAULT 0,     /* Create Date */ 
    MODDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,    /* Last Update Date */ 
    INSUSER VARCHAR(20) DEFAULT 'SYSTEM' NOT NULL,         /* User that inserted this entry */ 
    MODUSER VARCHAR(20),       /* User that last modified this entry */ 

    PRIMARY KEY(id) 
) engine InnoDB; 

ALTER TABLE LOCATION ADD CONSTRAINT FK_LOCATION_REGION FOREIGN KEY (REGIONNAME, LANG) REFERENCES REGION(NAME, LANG) ON DELETE CASCADE ON UPDATE CASCADE; 
ALTER TABLE LOCATION ADD CONSTRAINT UNIQUE (LANG, NAME); 

COMMIT; 

/* End of LOCATION table */ 
+0

Oops! Я забыл обновить/* комментарий */о том, что было полем Foreign Key .../FK - REGION.ID/должен теперь читать/ожидая ответа от пользователей stackoverflow / –

ответ

0

Для таблицы в таблице REGION необходим индекс для столбцов.

Решение:

После РЕГИОНА создается, но перед созданием РАСПОЛОЖЕНИЯ, добавьте:

CREATE INDEX REG_NAME_LANG ON REGION (NAME, LANG); 
Смежные вопросы