I have a web application (CiviCRM) that has the option to enable binary logging, which I've done. We use this software to record donations, including automatic recurring donations. Our payment processor sends a POST request to a particular URL, which SHOULD create a new donation record in the db. Instead, it's creating a record in the log table with log_action
of Insert
, but there's no corresponding record in the original table – and no Delete
record in the log.
What circumstances might cause this? Where should I begin troubleshooting? There's no clustering/relaying – there are a handful of triggers that act on this record, which I'm eyeing suspiciously, but would appreciate input.
MySQL version is 5.5.44-0+deb7u1.
Best Answer
It sounds like you lack the SUPER privilege (global permission).
When you connect to MySQL, run
SHOW GRANTS;
If you see more than one line, you do not have SUPER.
What does having SUPER give you ?
This also means you may only have database level grants for all users.
How can you tell ?
Login as root@localhost and run this
You should see something like this
As shown, SUPER does not exist for a DB Level user.
You can run this
to see your DB Level users.
Please also look into your DB level user having the TRIGGER privilege, which can allow a database level user to create, drop, or execute triggers.
Your real problem comes from Drupal's required settings for CiviCRM
You can look into doing on of the following:
UPDATE mysql.db SET trigger_priv = 'Y';
FLUSH PRIVILEGES;
GIVE IT A TRY !!!