Fix: missing unique key on barcode field to avoid database corruption

This commit is contained in:
Laurent Destailleur 2014-03-18 23:43:58 +01:00
parent ce4c78972a
commit 20ef4554e0
2 changed files with 14 additions and 0 deletions

View File

@ -1080,3 +1080,14 @@ create table llx_categories_extrafields
) ENGINE=innodb;
ALTER TABLE llx_categories_extrafields ADD INDEX idx_categories_extrafields (fk_object);
update llx_product set barcode = null where barcode in ('', '-1', '0');
update llx_societe set barcode = null where barcode in ('', '-1', '0');
-- Add missing unique keys
ALTER TABLE llx_product ADD INDEX idx_product_barcode (barcode);
ALTER TABLE llx_product ADD UNIQUE INDEX uk_product_barcode (barcode, fk_barcode_type, entity);
ALTER TABLE llx_societe ADD INDEX idx_societe_barcode (barcode);
ALTER TABLE llx_societe ADD UNIQUE INDEX uk_societe_barcode (barcode, fk_barcode_type, entity);

View File

@ -103,6 +103,9 @@ update llx_opensurvey_sondage set format = 'A' where format = 'A+';
-- ALTER TABLE llx_facture_fourn ALTER COLUMN fk_cond_reglement DROP NOT NULL;
update llx_product set barcode = null where barcode in ('', '-1', '0');
update llx_societe set barcode = null where barcode in ('', '-1', '0');
-- Sequence to removed duplicated values of barcode in llx_product. Use serveral times if you still have duplicate.
--select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_product where barcode is not null group by barcode having count(rowid) >= 2;
create table tmp_product_double as (select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_product where barcode is not null group by barcode having count(rowid) >= 2);