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,
KEYserial
(serial
,ip
),
KEYserial6
(serial
,ip6
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
mysql-server is 5.5.60-0+deb8u1
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!