"Roster item of the same JID already exists"

Hello.
I migrated the database from embedded to the MySQL according to the instructions http://confluence.atlassian.com/display/DOC/Migrating+from+HSQLDB+to+MySQL. At the same time updating openfire 3.6.3 to 3.7.1 with. Install plugins - monitoring, motd, packetFilter. Members come from the domain.
Now some users can not add other users to contact list. Someone might add, some do not.

I’m trying to add in web-console - print the “Roster item of the same JID already exists”.

In table ofRoster, there is no such entry exists. I add a record to the table ofRoster, restart the server - contact appears in the roster.
What could be the cause of the error?

warn.log:

2012.08.02 16:44:16 org.jivesoftware.openfire.roster.RosterItemProvider - Error trying to insert a new row in ofRoster
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry ‘700’ for key ‘PRIMARY’

2012.08.03 07:58:03 org.jivesoftware.openfire.roster.RosterItemProvider - Error trying to insert a new row in ofRoster
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry ‘706’ for key ‘PRIMARY’

2012.08.03 08:01:40 org.jivesoftware.openfire.roster.RosterItemProvider - Error trying to insert a new row in ofRoster
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry ‘707’ for key ‘PRIMARY’

After transfer of the database, openfire tries insert record with existing rosterid in table ofRoster.** **


translated translate.google.com

Solved. I created trigger in MySQL DB.

delimiter |

CREATE TRIGGER rosterIDfix BEFORE INSERT ON openfire.ofroster

FOR EACH ROW BEGIN

SET NEW.rosterID = (SELECT MAX(rosterID) + 1 FROM openfire.ofroster);

END;

|delimiter ;

1 Like