Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208

Cannot add or update a child row: a foreign key constraint fails

03.10.2013, 03:30. Показов 2911. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код ошибки:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrity
ConstraintViolationException: Cannot add or update a child row: a foreign 
key constraint fails (`bionic_university`.`account`, CONSTRAINT `fk_account_user` FOREIGN 
KEY (`user_id`)REFERENCES `user_information` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at com.bionic.university.mysqldao.MySQLAccountDAO.add(MySQLAccountDAO.java:44)
    at com.bionic.university.daofactory.Runner.main(Runner.java:20)
Вот бизнес-код:
Java
1
2
3
4
5
6
7
8
9
10
11
            String SQL = "INSERT INTO bionic_university.account (account_id, "
                    + "login, password, user_id, wallet_id, account_type_id)"
                    + "VALUES (?, ?, ?, ?, ?, ?)";
            ptmt = connection.prepareStatement(SQL);
            ptmt.setInt(1, account.getAccountId());
            ptmt.setString(2, account.getLogin());
            ptmt.setString(3, account.getPassword());
            ptmt.setInt(4, account.getUserId());
            ptmt.setInt(5, account.getWalletId());
            ptmt.setString(6, account.getAccountTypeId());
            ptmt.executeUpdate();
Ошибка, как мне кажеться, что в таблице в которую делаю инсерт есть три колонки с Foreign key. И нужно указывать еще значения и для них. Так? Если так, то как это сделать? Я не умею.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.10.2013, 03:30
Ответы с готовыми решениями:

Hibernate + Cannot add or update a child row: a foreign key constraint fails
Есть вот такая схема: Соответственно два класса: @Entity @Table(name = "item_orders") public class ItemOrders implements...

Cannot add or update a child row: a foreign key constraint fails
Доброе время суток. Являюсь полнейшим профаном в MySql и в базах данных собственно тоже. Создавал базу данных и таблицы в mysql...

Cannot add or update a child row: a foreign key constraint fails
Здравствуйте! Изучая MySQL и PHP столкнулся с такой вот проблемкой: Cannot add or update a child row: a foreign key constraint fails...

14
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
03.10.2013, 12:12
Добрый день.
Вы сделали правильное предположение - для вставки в таблицу данных Вам необходимо обеспечить чтобы поля, на которых наложено ограничение внешнего ключа (FOREIGN KEY), удовлетворяли им.
То есть:
1) Разберетесь к каким полям какие ограничения
2) Вставляйте данные, учитывая эти ограничения.
К примеру есть 2 таблицы.
Таблица 1 (tbl1):
id:int
Таблица 2(tbl2):
id:int
id_tbl1:int
На поле id_tbl1 таблицы tbl2 внесено ограничение, внешний ключ ссылается на таблицу tbl1 поле id.
Таким образом (для примера) при вставке Вы должны обеспечить тот факт, что вставляемое в поле id_tbl1 таблицы tbl2 значение будет содержаться в таблице tbl1 поле id.
1
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.10.2013, 13:09  [ТС]
Ну да. Но как сделать такой инсерт?
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.10.2013, 14:51
Возможно проблема в том, что в таблице user_information нет строки с id = 4.

Возможно у вас нарушение целостности данных и поэтому ошибка. Сначала надо обеспечить наличие соответствующих записей в таблицах, на которые ссылаются внешние ключи, а потом уже заполнять вашу основную таблицу.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.10.2013, 14:59  [ТС]
Gibby, я работаю в MySQL WorkBench. Связиваю стрелочками связь между таблицами и воркбенч сам создает внешние ключи и устанавливает связь. Здесь ошибки не может бить
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.10.2013, 15:03
Цитата Сообщение от animator404 Посмотреть сообщение
Gibby, я работаю в MySQL WorkBench. Связиваю стрелочками связь между таблицами и воркбенч сам создает внешние ключи и устанавливает связь. Здесь ошибки не может бить
А я и не говорил, что проблема с самими связями. Проблема в том, что вы эти связи, по все видимости, нарушаете.
Что выдает запрос
SQL
1
SELECT * FROM user_information WHERE id = 4
?

Ну и про "здесь ошибки быть не может" - это вы оптимист
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.10.2013, 15:18  [ТС]
0 строчек было возвращено. Так как таблицы у меня пустые
Миниатюры
Cannot add or update a child row: a foreign key constraint fails  
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.10.2013, 15:27  [ТС]
Вот
Миниатюры
Cannot add or update a child row: a foreign key constraint fails  
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.10.2013, 15:35
Ну, теперь вам надо заполнить все остальные таблицы, куда ведут ваши FOREING_KEY'ы и наступит вам щастье.

Смотрите, когда выв таблицу account вставляете запись, вы говорите, что существует некий пользователь с id = 4, некий кошелек с id = 5 и некий тип счета с id = 6. Все эти сущности хранятся в соответствующих отдельных таблицах. Когда вы пытаетесь выполнить запрос, база проверяет целостность данных - т.е. проверяет, что в таблице user_information действительно есть такой пользователь, в таблице wallet действительно есть такой кошелек и т.д. Если хотя бы одна из таких проверок не пройдет - вы получите Foreign key violation. Т.е. нарушение условий целостности, заданных внешним ключом.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.10.2013, 15:41  [ТС]
Gibby, тоесть вставлять запись в account нужно в самом конце?

Добавлено через 2 минуты
Я работаю с БД через DAO. Блииииииин, нужно написать DAO еще и для остальных таблиц. Думал это оставить на потом, прийдется сейчас.
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.10.2013, 15:55
Я не знаю, что такое "DAO еще и для остальных таблиц" - но да, если вы ползуетесь некой сущностью "клиент", то эта сущность должна существовать. Вы можете взять уже существующую сущность либо предварительно создать новую. Но сначала воспользоваться, а потом создать - нельзя.

Вообще с базами данных обычно работают с помощью фреймворка Hybernate. Возможно, стоит с ним познакомиться.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.10.2013, 16:00  [ТС]
Gibby, это да. Hibernate будет. Но сначала нужно выучить web. Программу обучения к сожалению создавал не я.

Добавлено через 3 минуты
Gibby, netbeans может сам генерить сущность с таблицы. Правда иногда нужно поправлять после него
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.10.2013, 16:09
Обычно в программах обучения перед непосредственной работы с базами данных сначала изучают всякие реляционные модели, реляционную алгебру, нормальные формы и т.д.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
03.10.2013, 16:12  [ТС]
Bionic
Препод узнал, что мы не очень знаем jdbc, сказал дальше идти мы не можем.
0
 Аватар для Gibby
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
03.10.2013, 16:15
Ну, что я могу сказать, разбирайтесь. Все не сложно на самом деле.

Если есть время и знание английского, советую этот курс прослушать: https://www.coursera.org/course/db
Внятное изложение основ.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2013, 16:15
Помогаю со студенческими работами здесь

Cannot add or update a child row: a foreign key constraint fails
Всем привет. Буду рад помощи. Столкнулся с ошибкой. 123Cannot add or update a child row: a foreign key constraint fails...

Cannot add or update a child row: a foreign key constraint fails
Такая проблема: не добавляется значение в таблицу через запрос mysql_query. Если тоже самое делать через phpmyadmin - всё работает... ...

#1452 - Cannot add or update a child row: a foreign key constraint fails
При добавлении данных выдает эту ошибку: #1452 - Cannot add or update a child row: a foreign key constraint fails...

Ошибка "Cannot add or update a child row: a foreign key constraint fails"
Здравствуйте. Столкнулась со следующей ошибкой Cannot add or update a child row: a foreign key constraint fails (`library`.`rbt`,...

Ошибка MySQL: "Cannot add or update a child row: a foreign key constraint fails"
Доброе время суток!! Пытаюсь сделать такой запрос: ALTER TABLE `positions` ADD FOREIGN KEY (`pst_provider_id`) REFERENCES...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru