techsneeze/dmarcts-report-parser

ALTER table fails after upgrade

Closed this issue · 3 comments

After upgrading dmarcts-report-parser, it fails with:

DBD::mysql::db do failed: Incorrect table definition; there can be only one auto column and it must be defined as a key at /home/users/dmarc/dmarcts-report-parser/dmarcts-report-parser.pl line 860.

when it tries to do ALTER TABLE rptrecord ADD id int(10) unsigned NOT NULL AUTO_INCREMENT FIRST; statement. SHOW CREATE TABLE says:

CREATE TABLE rptrecord (
serial int(10) unsigned NOT NULL,
ip int(10) unsigned DEFAULT NULL,
ip6 binary(16) DEFAULT NULL,
rcount int(10) unsigned NOT NULL,
disposition enum('none','quarantine','reject') DEFAULT NULL,
reason varchar(255) DEFAULT NULL,
dkimdomain varchar(255) DEFAULT NULL,
dkimresult enum('none','pass','fail','neutral','policy','temperror','permerror') DEFAULT NULL,
spfdomain varchar(255) DEFAULT NULL,
spfresult enum('none','neutral','pass','fail','softfail','temperror','permerror','unknown') DEFAULT NULL,
spf_align enum('fail','pass','unknown') NOT NULL,
dkim_align enum('fail','pass','unknown') NOT NULL,
identifier_hfrom varchar(255) DEFAULT NULL,
KEY serial (serial,ip),
KEY serial6 (serial,ip6)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

mysql-server is 5.5.60-0+deb8u1

(with latest master branch: 663e78c )

changing the definition in dmarcts-report-parser.pl:checkDatabase()

from
"id", "int(10) unsigned NOT NULL AUTO_INCREMENT",
to
"id", "int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY",

makes it upgrade the database OK.

Just submitted a change per your suggestion. Thanks!