Код ошибки 1215

Я получил эти два успешных запроса:

create table Donors (
    donor_id int not null auto_increment primary key,
    gender varchar(1) not null,
    date_of_birth date not null,
    first_name varchar(20) not null,
    middle_name varchar(20),
    last_name varchar(30) not null,
    home_phone tinyint(10),
    work_phone tinyint(10),
    cell_mobile_phone tinyint(10),
    medical_condition text,
    other_details text );
create table Donors_Medical_Condition (
    donor_id int not null,
    condition_code int not null,
    seriousness text,
    primary key(donor_id, condition_code),
    foreign key(donor_id) references Donors(donor_id)    );

но когда я попробую это:

create table Medical_Conditions (
    condition_code int not null,
    condition_name varchar(50) not null,
    condition_description text,
    other_details text,
    primary key(condition_code),
    foreign key(condition_code) references Donors_Medical_Condition(condition_code) );

i get “Код ошибки: 1215, не может добавить ограничение внешнего ключа”

Я не знаю, что я делаю неправильно.

02 апр. 2014, в 02:10

Найдена следующая информация по ошибке C1215 для автомобиля LADA GRANTA (2011-2018):

На русском языке:

ABS передний правый Запорный клапан Circuit Open

На английском языке:

ABS Front Right Isolation Valve Circuit Open

Вы можете задать вопрос или поделиться опытом устранения ошибки C1215 на автомобиле LADA с другими пользователями.

Возможную причину возникновения и советы по устранению можно найти в каталоге причин и советов:

Найти причину   >>> 

Ошибки (коды ошибок) полученные от прибора, сканера требуют правильной интерпретации информации, дабы не тратить время и деньги на замену работающих элементов автомобиля.

Проблема зачастую кроется намного глубже чем кажется на первый взгляд. Это& вызвано теми обстоятельствами, что информационные сообщения содержат, как было выше сказано, косвенную информацию о нарушении работы системы.

Может быть полезным для решения вопроса по устранению неисправности у Lada Granta:

Неисправный передний правый запорный клапан ABS. ABS Передний правый изолирующий жгут проводов открыт или замкнут. Неправильное электрическое соединение цепи переднего правого изолятора ABS.

Модуль антиблокировочной тормозной системы (ABS) контролирует передний правый запорный клапан ABS. Модуль ABS устанавливает код OBDII, если передний правый запорный клапан ABS не соответствует заводским спецификациям.

Мало того, что OBD2 ошибки работы двигателя или других электронных систем автомобиля не всегда на прямую указывают на неработающий элемент, но и в разных марках и моделях автомобилей одна и таже ошибка может возникать как следствие неисправности абсолютно разных элементов электронной системы.

Мы надеемся, с Вашей помощью, сформировать причино-следственную связь возникновения той или иной OBD2 ошибки у конкретного автомобиля (марка и модель). Как показал опыт если рассматривать определенную марка-модель автомобиля, то в подавляющем большинстве случаев причина ошибки одна и также.

Если ошибка указывает на неверные параметры (высокие или низкие значения) какого нибудь из датчиков или анализаторов, то вероятней всего этот элемент исправен, а проблему надо искать так сказать “выше по течению”, в элементах работу которых анализирует датчик или зонд.

Если ошибка указывает на постоянно открытый или закрытый клапан, то тут надо подойти к решению вопроса с умом, а не менять бездумно этот элемент. Причин может быть несколько: клапан засорен, клапан заклинил, на клапан приходит неверный сигнал от других неисправных узлов.

Читайте также:  Серверы Star Wars Battle Front 2 не смогли связаться с EA Star Bearfront 2

Ошибки работы двигателя OBD2 и других систем автомобиля не всегда на прямую указывают на неработающий элемент. Сама по себе ошибка является косвенными данными о неисправности в системе, в некотором смысле подсказкой, и только в редких случаях прямым указанием на неисправный элемент, датчик или деталь. Ошибки (коды ошибок) полученные от  прибора, сканера требуют правильной интерпретации  информации, дабы не тратить время и деньги на замену работающих элементов автомобиля. Проблема зачастую кроется намного глубже чем кажется на первый взгляд. Это вызвано теми обстоятельствами, что информационные сообщения содержат, как было выше сказано, косвенную информацию о шарушении работы системы.

Вот пару общих примеров. Если ошибка указывает на неверные параметры (высокие или низкие значения) какого нибудь из датчиков или анализаторов, то вероятней всего этот элемент исправен, так как он анализирует (выдает некие параметры или значения), а проблему надо искать так сказать “выше по течению”, в элементах работу которых анализирует датчик или зонд. 

Если ошибка указывает на постоянно открытый или закрытый клапан, то тут надо подойти к решению вопроса с умом, а не менять бездумно этот элемент. Причин может быть несколько: клапан засорен, клапан заклинил, на клапан приходит неверный сигнал от других неисправных узлов.

Еще один момент который хотелось бы отметить – это специфика той или иной марки и модели. Поэтому узнав ошибку работы двигателя или дрогой системы Вашего автомобиля не спешите делать поспешных решений, а подойдите к вопросу комплексно.

На нашем ресурсе имеется возможность задавать вопросы и делиться собственным опытом по устренению неисправностей связанных с ошибкой C1215. Задав вопрос в течении нескольких дней Вы сможете найти ответ на него.

Принимая во внимание тот факт, что OBD2 ошибки работы двигателя или других электронных систем автомобиля не всегда на прямую указывают на неработающий элемент, и то что разных марках и моделях автомобилей одна и таже ошибка может возникать как следствие неисправности абсолютно разных элементов электронной системы мы создали этот алгоритм помощи и обмена полезной информацией.

Мы надеемся, с Вашей помощью, сформировать причино-следственную связь возникновения той или иной OBD2 ошибки у конкретного автомобиля (марка и модель). Как показал опыт если рассматривать определенную марка-модель автомобиля, то в подавляющем большинстве случаев причина ошибки одна и таже. 

Если ошибка указывает на неверные параметры (высокие или низкие значения) какого нибудь из датчиков или анализаторов, то вероятней всего этот элемент исправен, а проблему надо искать так сказать “выше по течению”, в элементах работу которых анализирует датчик или зонд.

Если ошибка указывает на постоянно открытый или закрытый клапан, то тут надо подойти к решению вопроса с умом, а не менять бездумно этот элемент.  Причин может быть несколько: клапан засорен, клапан заклинил, на клапан приходит неверный сигнал от других неисправных узлов. 

Ошибки работы двигателя OBD2 и других систем автомобиля (ELM327) не всегда на прямую указывают на неработающий элемент. Сама по себе ошибка является косвенными данными о неисправности в системе, в некотором смысле подсказкой, и только в редких случаях прямым указанием на неисправный элемент, датчик или деталь. Ошибки (коды ошибок) полученные от  прибора, сканера требуют правильной интерпретации  информации, дабы не тратить время и деньги на замену работающих элементов автомобиля. Проблема зачастую кроется намного глубже чем кажется на первый взгляд. Это вызвано теми обстоятельствами, что информационные сообщения содержат, как было выше сказано, косвенную информацию о шарушении работы системы.

Читайте также:  Ошибка P1616 у LADA PRIORA (2008-2017)

Вот пару общих примеров. Если ошибка указывает на неверные параметры (высокие или низкие значения) какого нибудь из датчиков или анализаторов, то вероятней всего этот элемент исправен, так как он анализирует (выдает некие параметры или значения), а проблему надо искать так сказать “выше по течению”, в элементах работу которых анализирует датчик или зонд. 

Если ошибка указывает на постоянно открытый или закрытый клапан, то тут надо подойти к решению вопроса с умом, а не менять бездумно этот элемент.  Причин может быть несколько: клапан засорен, клапан заклинил, на клапан приходит неверный сигнал от других неисправных узлов.

Еще один момент который хотелось бы отметить – это специфика той или иной марки и модели. Поэтому узнав ошибку работы двигателя или дрогой системы Вашего автомобиля не спешите делать поспешных решений, а подойдите к вопросу комплексно.

Наш форум создан для всех пользователей, от простых автолюбителей до профессиональных автоэлектриков. По капле от каждого и всем будет полезно.

Ответов

В MySql ссылка на внешний ключ должна ссылаться на индекс (включая первичный ключ), где первая часть индекса совпадает с полем внешнего ключа. Если вы создаете индекс на condition_code или изменяете первичный ключ st, что condition_code является первым, вы должны иметь возможность создать индекс.

Чтобы определить a foreign key, указанное родительское поле должно иметь индекс, определенный на нем.

В соответствии с документацией по ограничениям foreign key:

Определите INDEX на condition_code в родительской таблице Donors_Medical_Condition и он должен работать.

create table Donors_Medical_Condition (
    donor_id int not null,
    condition_code int not null,
    seriousness text,

    KEY ( condition_code ), -- <---- this is newly added index key

    primary key(donor_id, condition_code),
    foreign key(donor_id) references Donors(donor_id)    );

Но, похоже, вы неправильно определили порядок и ссылки в таблицах.
Вы должны были определить foreign key в таблице Donors_Medical_Condition, но не в таблице Donors_Medical_Conditions. Последний кажется родителем.

Измените свой script соответственно.

Они должны быть написаны как:

-- create parent table first ( general practice )
create table Medical_Conditions (
    condition_code int not null,
    condition_name varchar(50) not null,
    condition_description text,
    other_details text,
    primary key(condition_code)
);

-- child table of Medical_Conditions 
create table Donors_Medical_Condition (
    donor_id int not null,
    condition_code int not null,
    seriousness text,
    primary key(donor_id, condition_code),
    foreign key(donor_id) references Donors(donor_id),
    foreign key(condition_code) 
        references Donors_Medical_Condition(condition_code)
);

A обходной путь для тех, кто нуждается в быстрой инструкции:
FYI: Моя проблема НЕ была вызвана несогласованностью типов данных/размеров столбцов, сортировки или механизма хранения InnoDB.

Как:
Загрузите Workbench MySQL и используйте его графический интерфейс для добавления внешнего ключа. Это оно!

Почему:
Ошибка имеет отношение к индексам. Я узнал об этом из DML script, автоматически созданного с помощью инструментария MySQL. Это также помогло мне исключить все эти возможности несоответствия. Оно относится к одному из условий, к которым относится определение внешнего ключа. То есть: “MySQL требует индексов для внешних ключей и ссылочных ключей, чтобы проверки внешнего ключа могли быть быстрыми и не требовать сканирования таблицы”. Вот официальное выражение: http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html
У меня не было идеи добавить индекс в столбец внешнего ключа (в дочерней таблице), только обратил внимание на ссылочный столбец ТО (в родительской таблице).
Вот автогенерированный script (PHONE.PERSON_ID не имел индекса изначально):

ALTER TABLE `netctoss`.`phone` 
ADD INDEX `personfk_idx` (`PERSON_ID` ASC);
ALTER TABLE `netctoss`.`phone` 
ADD CONSTRAINT `personfk`
  FOREIGN KEY (`PERSON_ID`)
  REFERENCES `netctoss`.`person` (`ID`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

Убедитесь, что оба поля имеют одинаковый размер, и если ссылочное поле без знака, поле ссылки также должно быть неподписанным.

Читайте также:  Синий экран без кодов ошибок

У меня такая же проблема, и в соответствии с полученными ответами я проверял все типы данных и ссылки, но каждый раз, когда я воссоздавал свои таблицы, я получаю эту ошибку. Проведя пару часов, я узнал ниже команду, которая дала мне ошибку –

ПОКАЖИТЕ СОСТОЯНИЕ INNODB ДВИГАТЕЛЯ,

LATEST FOREIGN KEY ERROR
------------------------
2015-05-16 00:55:24 12af3b000 Error in foreign key constraint of table letmecall/lmc_service_result_ext:
there is no index in referenced table which would contain
the columns as the first columns, or the data types in the
referenced table do not match the ones in table. Constraint:
,
  CONSTRAINT "fk_SERVICE_RESULT_EXT_LMC_SERVICE_RESULT1" FOREIGN KEY ("FK_SERVICE_RESULT") REFERENCES "LMC_SERVICE_RESULT" ("SERVICE_RESULT") ON DELETE NO ACTION ON UPDATE NO ACTION

Я удалил все отношения с помощью mysql workbench, но все же вижу ту же ошибку. Проведя несколько минут, я выполняю инструкцию ниже, чтобы увидеть все ограничения, доступные в БД –

выберите * из information_schema.table_constraints, где constraint_schema = ‘XXXXX’

Мне было интересно, что я удалил все отношения с помощью mysql workbench, но все же это ограничение было там. И причина в том, что это ограничение уже было создано в db.

Поскольку это была моя тестовая БД, поэтому я сбросил БД, и когда я воссоздал всю таблицу вместе с этой таблицей, тогда это сработало. Таким образом, решение заключалось в том, что это ограничение должно быть удалено из БД перед созданием новых таблиц.

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

Хорошо, вы также создаете свои таблицы в неправильном порядке. Здесь весь script:

create table Donors (
donor_id int not null auto_increment primary key,
gender varchar(1) not null,
date_of_birth date not null,
first_name varchar(20) not null,
middle_name varchar(20),
last_name varchar(30) not null,
home_phone tinyint(10),
work_phone tinyint(10),
cell_mobile_phone tinyint(10),
medical_condition text,
other_details text );

create table Medical_Conditions (
condition_code int not null,
condition_name varchar(50) not null,
condition_description text,
other_details text,
primary key(condition_code) );

create table Donors_Medical_Condition (
donor_id int not null,
condition_code int not null,
seriousness text,
primary key(donor_id, condition_code),
foreign key(donor_id) references Donors(donor_id),
foreign key(condition_code) references Medical_Conditions(condition_code) );

Ещё вопросы

Сообщество Overcoder

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *