我试图在我的评论表中插入值,我收到一个错误.它说我无法添加或更新子行,我不知道这意味着什么.我的架构看起来像这样:
--
-- 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,CONSTRAINTuser_ibfk_1FOREIGN KEY(country)REFERENCEScountry_type(id)ON DELETE NO ACTION ON UPDATE NO ACTION)
Tsi*_*sum 25
它只是意味着您正在插入的表注释上的列国家/地区的值在表country_type上不存在,或者您没有在表user上插入country的值.请记住,表注释中列国家/地区的值取决于表country_type上的ID值.
您在此表和另一个表之间有外键,并且该新行将违反该约束。
如果运行show create table user,您应该能够看到约束,它显示为CONSTRAINT...,并且显示哪些列引用哪些表/列。
在这种情况下,country引用country_type (id)并且您没有指定的值country。您需要放入中存在的值country_type。