SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败

and*_*1_1 14 mysql sql

我试图在我的评论表中插入值,我收到一个错误.它说我无法添加或更新子行,我不知道这意味着什么.我的架构看起来像这样:

--
-- Baza danych: `koxu1996_test`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `user`
--

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) COLLATE utf8_bin NOT NULL,
  `password` varchar(64) COLLATE utf8_bin NOT NULL,
  `password_real` char(32) COLLATE utf8_bin NOT NULL,
  `email` varchar(32) COLLATE utf8_bin NOT NULL,
  `code` char(8) COLLATE utf8_bin NOT NULL,
  `activated` enum('0','1') COLLATE utf8_bin NOT NULL DEFAULT '0',
  `activation_key` char(32) COLLATE utf8_bin NOT NULL,
  `reset_key` varchar(32) COLLATE utf8_bin NOT NULL,
  `name` varchar(32) COLLATE utf8_bin NOT NULL,
  `street` varchar(32) COLLATE utf8_bin NOT NULL,
  `house_number` varchar(32) COLLATE utf8_bin NOT NULL,
  `apartment_number` varchar(32) COLLATE utf8_bin NOT NULL,
  `city` varchar(32) COLLATE utf8_bin NOT NULL,
  `zip_code` varchar(32) COLLATE utf8_bin NOT NULL,
  `phone_number` varchar(16) COLLATE utf8_bin NOT NULL,
  `country` int(8) NOT NULL,
  `province` int(8) NOT NULL,
  `pesel` varchar(32) COLLATE utf8_bin NOT NULL,
  `register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `authorised_time` datetime NOT NULL,
  `edit_time` datetime NOT NULL,
  `saldo` decimal(9,2) NOT NULL,
  `referer_id` int(8) NOT NULL,
  `level` int(8) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `country` (`country`),
  KEY `province` (`province`),
  KEY `referer_id` (`referer_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=83 ;
Run Code Online (Sandbox Code Playgroud)

我试图做的mysql语句看起来像这样:

INSERT INTO `user` (`password`, `code`, `activation_key`, `reset_key`, `register_time`,                `edit_time`, `saldo`, `referer_id`, `level`) VALUES (:yp0, :yp1, :yp2, :yp3, NOW(), NOW(), :yp4, :yp5, :yp6). Bound with :yp0='fa1269ea0d8c8723b5734305e48f7d46', :yp1='F154', :yp2='adc53c85bb2982e4b719470d3c247973', :yp3='', :yp4='0', :yp5=0, :yp6=1
Run Code Online (Sandbox Code Playgroud)

我得到的错误看起来像这样:

SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(koxu1996_test.user,CONSTRAINT user_ibfk_1FOREIGN KEY(country)REFERENCES country_type(id)ON DELETE NO ACTION ON UPDATE NO ACTION)

Tsi*_*sum 25

它只是意味着您正在插入的表注释上的列国家/地区的值在表country_type上不存在,或者您没有在表user上插入country的值.请记住,表注释中列国家/地区的值取决于表country_type上的ID值.


And*_*and 6

您在此表和另一个表之间有外键,并且该新行将违反该约束。

如果运行show create table user,您应该能够看到约束,它显示为CONSTRAINT...,并且显示哪些列引用哪些表/列。

在这种情况下,country引用country_type (id)并且您没有指定的值country。您需要放入中存在的值country_type