tarwyn
02-24-2014, 08:31 AM
User tables are currently defined as such
user_tables_2014-02-23-02_01.sql:
CREATE TABLE `group_leaders` (
`gid` int(4) NOT NULL,
`leadername` varchar(64) NOT NULL,
`marknpc` varchar(64) NOT NULL DEFAULT '',
`leadershipaa` tinyblob NOT NULL,
`maintank` varchar(64) NOT NULL DEFAULT '',
`assist` varchar(64) NOT NULL,
`puller` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`gid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
It defines the column "leadershipaa" as NOT NULL but does not provide a default value for it. Likewise it asks for the column "assist" to be NOT NULLable but fails to provide a default.
This will cause an error in database.cpp @ 2048 in the function
void Database::SetGroupLeaderName(uint32 gid, const char* name) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
if (!RunQuery(query, MakeAnyLenString(&query, "Replace into group_leaders set gid=%lu, leadername='%s'",(unsigned long)gid,name), errbuf))
printf("Unable to set group leader: %s\n",errbuf);
safe_delete_array(query);
}
This SQL Statement will fail because it cannot create a record due to the leadershipaa/assist column requirements.
If this function fails, the group_leader record is never created and successive code that queries that table in order to function will not work correctly: groups do no longer function across zones. Additionally if grouped with a merc, you're technically in a group without a leader, and you couldn't invite anyone else into the group.
To fix, the table definition must change:
CREATE TABLE `group_leaders` (
`gid` int(4) NOT NULL,
`leadername` varchar(64) NOT NULL,
`marknpc` varchar(64) NOT NULL DEFAULT '',
`leadershipaa` tinyblob NULL,
`maintank` varchar(64) NOT NULL DEFAULT '',
`assist` varchar(64) NOT NULL DEFAULT '',
`puller` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`gid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
user_tables_2014-02-23-02_01.sql:
CREATE TABLE `group_leaders` (
`gid` int(4) NOT NULL,
`leadername` varchar(64) NOT NULL,
`marknpc` varchar(64) NOT NULL DEFAULT '',
`leadershipaa` tinyblob NOT NULL,
`maintank` varchar(64) NOT NULL DEFAULT '',
`assist` varchar(64) NOT NULL,
`puller` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`gid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
It defines the column "leadershipaa" as NOT NULL but does not provide a default value for it. Likewise it asks for the column "assist" to be NOT NULLable but fails to provide a default.
This will cause an error in database.cpp @ 2048 in the function
void Database::SetGroupLeaderName(uint32 gid, const char* name) {
char errbuf[MYSQL_ERRMSG_SIZE];
char *query = 0;
if (!RunQuery(query, MakeAnyLenString(&query, "Replace into group_leaders set gid=%lu, leadername='%s'",(unsigned long)gid,name), errbuf))
printf("Unable to set group leader: %s\n",errbuf);
safe_delete_array(query);
}
This SQL Statement will fail because it cannot create a record due to the leadershipaa/assist column requirements.
If this function fails, the group_leader record is never created and successive code that queries that table in order to function will not work correctly: groups do no longer function across zones. Additionally if grouped with a merc, you're technically in a group without a leader, and you couldn't invite anyone else into the group.
To fix, the table definition must change:
CREATE TABLE `group_leaders` (
`gid` int(4) NOT NULL,
`leadername` varchar(64) NOT NULL,
`marknpc` varchar(64) NOT NULL DEFAULT '',
`leadershipaa` tinyblob NULL,
`maintank` varchar(64) NOT NULL DEFAULT '',
`assist` varchar(64) NOT NULL DEFAULT '',
`puller` varchar(64) NOT NULL DEFAULT '',
PRIMARY KEY (`gid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;