该表的目的是按name
分钟收集多个统计信息(按列指定),然后我编写了一些 sql 将分钟的 sum() 按名称汇总为小时,并将小时的 sum()成天等
这是表结构:
CREATE TABLE IF NOT EXISTS `stats` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`time` varchar(19) NOT NULL,
`name` varchar(16) NOT NULL,
`value` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `time_name` (`time`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=32060002 ;
这是“显示从属状态”给出的错误之一:
Last_SQL_Error: Error 'Duplicate entry '32189722' for key 'PRIMARY'' on query. Default database: 'quip_mailer'. Query: 'replace into stats select NULL, date_format( execute_time, '%Y-%m-%d %H:%i' ), 'sent', count(*) as v from queue as q where execute_time > '2013-07-13 16:17:00' group by date_format( execute_time, '%Y-%m-%d %H:%i' ) order by date_format( execute_time, '%Y-%m-%d %H:%i' )'
错误是主键,尽管您可以看到传入的主键是 NULL。
那么为什么不“替换”实际上并替换数据呢?对我来说没有意义。
如果我复制/粘贴在从站上运行该确切的 sql 命令,则工作正常。只有当它从复制中下降时才会出现问题。