一、 问题描述:
查看从库状态时发现Last_SQL_Errno: 1062(主键值重复,入库失败)
具体错误如下:
Last_SQL_Errno: 1062
Last_SQL_Error: Error 'Duplicate entry '95' for key 'PRIMARY'' on query. Default database: 'nobserver_new'. Query: 'INSERT INTO media_class_jieliang (
dateline,
media_class,
a_times,
m_times
) SELECT
DATE_FORMAT(adddate(now() ,- 1), '%Y%m%d'),
IFNULL(
c.media_class,
'其他网站'
),
sum(a.fld_atimes),
sum(a.fld_mtimes)
FROM
(
SELECT
fld_MediaID,
fld_ATimes,
fld_MTimes
FROM
tab_jieliang
WHERE
DATE_FORMAT(fld_AccessDate, '%Y%m%d') = DATE_FORMAT(adddate(now() ,- 1), '%Y%m%d')
) a
LEFT OUTER JOIN (
SELECT
fld_id,
fld_Domain
FROM
tab_media
) b ON (a.fld_mediaid = b.fld_id)
LEFT OUTER JOIN (
SELECT
media_domain,
media_class
FROM
tab_media_category
) c ON (
b.fld_domain = c.media_domain
)
GROUP BY
media_class'
二、解决方法:
1、主库查看media_class_jieliang表中id为95的值
mysql> select * from media_class_jieliang where seqid='95';
+-------+----------+-------------+---------+---------+
| seqid | dateline | media_class | a_times | m_times |
+-------+----------+-------------+---------+---------+
| 95 | 20150612 | ??θ? | 12 | 12 |
+-------+----------+-------------+---------+---------+
mysql> set names utf8;
mysql> select * from media_class_jieliang where seqid='95';
+-------+----------+-------------+---------+---------+
| seqid | dateline | media_class | a_times | m_times |
+-------+----------+-------------+---------+---------+
| 95 | 20150612 | 视频网站 | 12 | 12 |
+-------+----------+-------------+---------+---------+
2、从库查看media_class_jieliang表中id为95的值
mysql> select * from media_class_jieliang where seqid='95';
+-------+----------+-------------+---------+---------+
| seqid | dateline | media_class | a_times | m_times |
+-------+----------+-------------+---------+---------+
| 95 | 20150611 | ??θ? | 49 | 49 |
+-------+----------+-------------+---------+---------+
mysql> set names utf8;
mysql> select * from media_class_jieliang where seqid='95';
+-------+----------+-------------+---------+---------+
| seqid | dateline | media_class | a_times | m_times |
+-------+----------+-------------+---------+---------+
| 95 | 20150611 | 视频网站 | 49 | 49 |
+-------+----------+-------------+---------+---------+
3、从库与主库中的数据不一致,手工将从库数据更新
mysql> desc media_class_jieliang;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| seqid | int(16) | NO | PRI | NULL | auto_increment |
| dateline | varchar(10) | NO | | NULL | |
| media_class | varchar(50) | NO | | NULL | |
| a_times | int(16) | NO | | 0 | |
| m_times | int(16) | NO | | 0 | |
+-------------+-------------+------+-----+---------+----------------+
mysql> replace into media_class_jieliang(seqid,dateline,media_class,a_times,m_times) values(95,'20150612','视频网站',12,12);
4、检查更新结果
mysql> select * from media_class_jieliang where seqid='95';
+-------+----------+-------------+---------+---------+
| seqid | dateline | media_class | a_times | m_times |
+-------+----------+-------------+---------+---------+
| 95 | 20150612 | 视频网站 | 12 | 12 |
+-------+----------+-------------+---------+---------+
5、停止从库服务,跳过该错误,启动从库服务
mysql> slave stop;
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER =1;
mysql> slave start;
6、检查从库同步状态
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.30.66
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 302242453
Relay_Log_File: localhost-relay-bin.000003
Relay_Log_Pos: 1871144
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 302242453
Relay_Log_Space: 42511366
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
ERROR:
No query specified
<本文作者:rtt8387,专注Oracle、Mysql数据库技术>
<版权所有,请勿转载。如须转载请详细标明转载出处,否则追究法律责任!>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24113018/viewspace-1700354/
,如需转载,请注明出处,否则将追究法律责任。