我的Web应用程序数据库中有一个带有唯一键(date+ userid)的表.当我尝试使用现有插入记录时date,userid我收到以下错误:
dupicate key in table
Run Code Online (Sandbox Code Playgroud)
我在应用程序配置中打开了数据库调试器,因为我需要使用MySQL错误号和消息.现在我需要处理这个错误.我可以在控制器中使用硬编码常量,但我认为这不是一个好主意.我需要在很多地方进行数据库错误处理,我不喜欢CodeIgniter的错误处理.有关处理数据库错误的最佳做法是什么?
我收到错误MysqlError: Duplicate entry '1-5' for key 'PRIMARY',如下面的代码中所示.它只发生一次(我可以检测到,但它是随机的)我找不到原因(New Relic报道),但我无法重现,除了行号和给出的错误,我没有更多的信息.架构和代码如下.
num_rows()以某种方式返回一个不是1的值,即使它不应该.如果有人可以提供一些有关如何调试或修复的见解,那将会有所帮助.
这是我的location_items架构:
CREATE TABLE `phppos_location_items` (
`location_id` int(11) NOT NULL,
`item_id` int(11) NOT NULL,
`location` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`cost_price` decimal(23,10) DEFAULT NULL,
`unit_price` decimal(23,10) DEFAULT NULL,
`promo_price` decimal(23,10) DEFAULT NULL,
`start_date` date DEFAULT NULL,
`end_date` date DEFAULT NULL,
`quantity` decimal(23,10) DEFAULT '0.0000000000',
`reorder_level` decimal(23,10) DEFAULT NULL,
`override_default_tax` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`location_id`,`item_id`),
KEY `phppos_location_items_ibfk_2` (`item_id`),
CONSTRAINT `phppos_location_items_ibfk_1` FOREIGN KEY (`location_id`) REFERENCES `phppos_locations` …Run Code Online (Sandbox Code Playgroud)