If the upgrade script was formatted like this it would only insert if it isn't already there:
INSERT INTO config.i18n_locale (code,marc_code,name,description) SELECT 'es-ES', 'spa', oils_i18n_gettext('es-ES', 'Spanish', 'i18n_l', 'name'), oils_i18n_gettext('es-ES', 'Spanish', 'i18n_l', 'description') WHERE NOT EXISTS (SELECT 1 FROM config.i18n_locale WHERE code = 'es-ES');
Not going to argue either way for backporting, though. Just providing a possible solution to the "you already have that row!" problem.
If the upgrade script was formatted like this it would only insert if it isn't already there:
INSERT INTO config.i18n_locale (code,marc_ code,name, description) gettext( 'es-ES' , 'Spanish', 'i18n_l', 'name'),
oils_i18n_ gettext( 'es-ES' , 'Spanish', 'i18n_l', 'description')
SELECT 'es-ES', 'spa', oils_i18n_
WHERE NOT EXISTS (SELECT 1 FROM config.i18n_locale WHERE code = 'es-ES');
Not going to argue either way for backporting, though. Just providing a possible solution to the "you already have that row!" problem.