Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Не срабатывает INSERT из-за внешнего ключа равного NULL  [new]
Vlad__i__mir
Member

Откуда:
Сообщений: 384
Здравствуйте!
В интернете прочитал, что внешний ключ может равнятmся NULL.
Описал следующие сущности:
create table Data_user(
                          Id_data_user BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
                          Telefone VARCHAR(12)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

create table Users(
                      Id_Users BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
                      Login VARCHAR(50) NOT NULL,
                      Password VARCHAR(1000) NOT NULL,
                      Data_user_id BIGINT default null,
                      CONSTRAINT FK_Users_Data_user FOREIGN KEY (Data_user_id) REFERENCES Data_user (Id_data_user)
                      ON delete set null on update restrict
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


При попытке записать в
автор
Users
выдает ошибку, что
автор
Data_user
не установлено значение по умолчанию, хотя этот объект вообще не создается, а на место FOREIGN KEY прописывается по умолчанию NULL:

автор
Error Code: 1364. Field 'Data_user' doesn't have a default value

INSERT INTO Users (Id_Users, Login, Password, Word_coder, Status, email, First_name, Last_name, Created, Updated) VALUES (1,'vldmr','42f846961c6718e804bcdd0f04d32a9d44fa3a4a51d4983026bd8b31525af5b5',
                     'vldmr','ACTION','vldmr@gmail.com','Vladimir','S','2020.10.25','2020.10.25');


Скажите где ошибка и как можно сделать?
Нужно чтобы
автор
Users
содержал ссылку на
автор
Data_user
, а не наоборот. Как наоборот сделать знаю.
Но
автор
Data_user
нам заранее не известен и может быть описан позднее.
29 окт 20, 21:42    [22223228]     Ответить | Цитировать Сообщить модератору
 Re: Не срабатывает INSERT из-за внешнего ключа равного NULL  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1190
Vlad__i__mir,

А теперь покажите то же самое, но с воспроизводимым примером. Хинт: у вас не соответствует insert показанному create table. А, что очевидно если прочитать текст ошибки, одно из неуказанных в insert полей под названием Data_user не имеет значения по-умолчанию. Что используемый у вас sql_mode запрещает.
29 окт 20, 23:38    [22223270]     Ответить | Цитировать Сообщить модератору
 Re: Не срабатывает INSERT из-за внешнего ключа равного NULL  [new]
Vlad__i__mir
Member

Откуда:
Сообщений: 384
Melkij
Vlad__i__mir,

А теперь покажите то же самое, но с воспроизводимым примером. Хинт: у вас не соответствует insert показанному create table. А, что очевидно если прочитать текст ошибки, одно из неуказанных в insert полей под названием Data_user не имеет значения по-умолчанию. Что используемый у вас sql_mode запрещает.


Решил, чтобы легче читалось урезать код, а про то что ISERT нужно урезать забыл.

Нашел ошибку, вы были правы, дело не во внешнем ключе, а в другом поле. Это моя невнимательность. Спасибо!

Сообщение было отредактировано: 30 окт 20, 13:15
30 окт 20, 13:17    [22223520]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить