This error occurs when trying to run the Category Products index, and is due to the indexing process attempting to insert a row into the catalog_category_product_index table, where either the product_id or the category_id don't exist. This causes the "Intergrity Constraint Violation".
This can sometimes happen when a database gets corrupt, often from 3rd party desktop type software or a badly written extension.
To fix this, first check that this is indeed the issue. Backup your database and then run the following SQL to see if any product and/or category associations are incorrect:
# Determine incorrect product associations SELECT * FROM `catalog_category_product` WHERE product_id not in (select entity_id from catalog_product_entity); # Determine incorrect categories SELECT * FROM `catalog_category_product` WHERE category_id not in (select entity_id from catalog_category_entity);
If that returns a record, you'll know exactly which product is in a non-existent category or which category has a non-existent product. Run the following SQL to then remove those invalid records:
# Delete incorrect product associations DELETE FROM `catalog_category_product` WHERE product_id not in (select entity_id from catalog_product_entity); # Delete incorrect categories DELETE FROM `catalog_category_product` WHERE category_id not in (select entity_id from catalog_category_entity);
Now log back into Magento Admin and reindex the Category Products index.