За последние 24 часа нас посетили 16389 программистов и 1556 роботов. Сейчас ищут 1588 программистов ...

Внешние ключи MySQL

Тема в разделе "MySQL", создана пользователем flautr, 12 май 2016.

  1. flautr

    flautr Активный пользователь

    С нами с:
    4 авг 2015
    Сообщения:
    120
    Симпатии:
    0
    Всем привет. Не могу понять, почему в MySQL не создается внешний ключ.
    Вот таблица в PostgreSQL все работает
    Код (Text):
    1. CREATE TABLE stock (
    2. user_id integer NOT NULL DEFAULT 0,
    3. exchange character varying (6) NOT NULL,
    4. CONSTRAINT "PK_id" PRIMARY KEY (user_id, exchange),
    5. CONSTRAINT "FK_id" FOREIGN KEY ("user_id")
    6. REFERENCES phpbb_profile_fields_data ("user_id"));
    А вот она же, но в MySQL не создается
    Код (Text):
    1. CREATE TABLE
    2.     `stock` (
    3.         `user_id` INT(6) NOT NULL,
    4.         `exchange` CHAR(6) NOT NULL,
    5.         PRIMARY KEY(`user_id`, `exchange`),
    6.         FOREIGN KEY (`user_id`)
    7.     REFERENCES phpbb_profile_fields_data (`user_id`));
    Поясняю. Таблица stock связана с таблицей phpbb_profile_fields_data. По ней проверяются зарегистрирован ли такой user_id в системе. Если есть, в таблицу stock будет добавлена запись.
     
    #1 flautr, 12 май 2016
    Последнее редактирование: 12 май 2016
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Ошибку пишет?
     
  3. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    1. таблица должна быть innodb
    2. раздели на два запроса: в одном создаётся сама таблица, во втором добавляется FOREIGN KEY
    3. сделай то что надо руками в пхпмайдмине, потом экспортни эту таблицу и посмотре как это будет выглядеть в дампе
     
  4. flautr

    flautr Активный пользователь

    С нами с:
    4 авг 2015
    Сообщения:
    120
    Симпатии:
    0
    Спасибо. Посмотрел ошибку, стал искать причину) Ну и про innodb не знал. Проблему решил.