0

该表的目的是按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 命令,则工作正常。只有当它从复制中下降时才会出现问题。

4

1 回答 1

0

登录到从服务器并验证其上的自动增量值是否等于或高于您的主服务器上的当前最大值。可能发生的情况是自动增量值在主从之间不同步。一旦知道从站的自增值,您就可以ALTER TABLE主站并将自增起始值设置为高于从站自增值的安全数。

于 2013-07-14T00:47:33.177 回答