Hallo,
ich brauche eine Tabelle in der Feeds gespeichert werden. Ein Backgroundjob soll regelmäßig nach Updates schauen, ich bekomme die Daten mit einen Timestamp sowie einer Benutzerzuordnung. Beide Daten zusammen sind einzigartig, daher möchte ich diese als UNIQUE CONSTRAINT verwenden um bei den Updates der Feed bereits ausgelesene mittels INSERT ... ON DUPLICATE KEY UPDATE ...zu überspringen.
So wird das ganze definiert: ALTER TABLE wcf1_gman_feedlist ADD CONSTRAINT charId_feedTime_UQ UNIQUE (charID, feedTime);
Das WCF versteht diese Anweisung aber falsch und will eine Column an die tabelle tackern: wcf\system\package\PackageInstallationSQLParser->executeAddColumnStatement('wcf1_gman_feedlist', 'CONSTRAINT', [ type => , notNull => , default => , autoIncrement => , key => ])
Das Resultat ist diese Fehlermeldung:
Ein Fehler ist aufgetreten
Interner Fehlercode: 04c75206f8f49961a95867dac5fe8d1fd445f5eb
Was ist passiert?
Leider ist es bei der Verarbeitung zu einem Fehler gekommen und die Ausführung wurde abgebrochen. Falls möglich, leiten Sie bitte den oben stehenden Fehlercode an den Administrator weiter.
Administratoren können die vollständige Fehlermeldung mit Hilfe dieses Codes in der Administrationsoberfläche unter „Protokoll » Fehler“ einsehen. Zusätzlich wurden die Informationen in die Protokolldatei */log/2016-12-30.txt geschrieben und können beispielsweise mit Hilfe eines FTP-Programms abgerufen werden.
Hinweis: Der Fehlercode wird zufällig generiert, erlaubt keinen Rückschluss auf die Ursache und ist daher für Dritte nutzlos.
System Information
-
PHP Version:
7.0.13-1~dotdeb+8.1
-
WoltLab Suite Core:
3.0.0 RC 4
-
Peak Memory Usage:
4.364/128 MiB
-
Request URI:
/com.sylvansagarde/acp/index.php?install-package/&t=948d42b4ef3c3cc6d98bfcc4e7bca90d61a4a39f
-
Referrer:
-
User Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Error
-
Error Type:
wcf\system\exception\SystemException
-
Error Message:
Cannot add column 'CONSTRAINT' to table 'wcf1_gman_feedlist'.
-
File:
*/lib/system/package/PackageInstallationSQLParser.class.php (281)
-
Stack Trace:
- #0 */lib/system/database/util/SQLParser.class.php (155):
- wcf\system\package\PackageInstallationSQLParser->executeAddColumnStatement('wcf1_gman_feedlist', 'CONSTRAINT', [ type => , notNull => , default => , autoIncrement => , key => ])
- #1 */lib/system/database/util/SQLParser.class.php (47):
- wcf\system\database\util\SQLParser->executeStatement('ALTER TABLE', 'ALTER TABLE wcf1_gman_feedlist ADD CONSTRAINT charId_feedTime_UQ UNIQUE (charID, feedTime)')
- #2 */lib/system/package/PackageInstallationSQLParser.class.php (103):
- wcf\system\database\util\SQLParser->execute()
- #3 */lib/system/package/plugin/SQLPackageInstallationPlugin.class.php (45):
- wcf\system\package\PackageInstallationSQLParser->test()
- #4 */lib/system/package/PackageInstallationDispatcher.class.php (595):
- wcf\system\package\plugin\SQLPackageInstallationPlugin->install()
- #5 */lib/system/package/PackageInstallationDispatcher.class.php (134):
- wcf\system\package\PackageInstallationDispatcher->executePIP([ attributes => , pip => , value => ])
- #6 */lib/acp/action/InstallPackageAction.class.php (72):
- wcf\system\package\PackageInstallationDispatcher->install('cfdb4fd8')
- #7 */lib/action/AbstractDialogAction.class.php (68):
- wcf\acp\action\InstallPackageAction->stepInstall()
- #8 */lib/action/AbstractAction.class.php (47):
- wcf\action\AbstractDialogAction->execute()
- #9 */lib/system/request/Request.class.php (83):
- wcf\action\AbstractAction->__run()
- #10 */lib/system/request/RequestHandler.class.php (94):
- wcf\system\request\Request->execute()
- #11 */acp/index.php (9):
- wcf\system\request\RequestHandler->handle('wcf', true)
Zur besseren Übersicht die komplette install.sql (In Zeile 222 ist besagtes ALTER TABLE zu finden):
DROP TABLE IF EXISTS wcf1_gman_group;
CREATE TABLE wcf1_gman_group (
groupID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50) NOT NULL,
teaser VARCHAR(250) NOT NULL DEFAULT '',
wcfGroupID INT(10) NOT NULL,
showCalender TINYINT(1) NOT NULL DEFAULT 0,
calendarTitle VARCHAR(50) NOT NULL,
calendartext TEXT NULL,
fetchCalendar TINYINT(1) NOT NULL DEFAULT 0,
calendarQuerry VARCHAR(25) NOT NULL DEFAULT '',
gameTitle VARCHAR(50) NOT NULL DEFAULT '',
gameRank TINYINT(1) NOT NULL DEFAULT 0,
showRoaster TINYINT(1) NOT NULL DEFAULT 1,
articIeID INT(10) NULL,
threadID INT(10) NULL,
boardID INT(10) NULL,
mediaID INT(10) NULL,
isRaidgruop INT(10) NOT NULL,
fetchWCL TINYINT(1) NOT NULL DEFAULT 0,
wclQuerry VARCHAR(100) NOT NULL DEFAULT '',
orderNo SMALLINT(4) NOT NULL,
lastUpdate INT(10) NOT NULL
KEY (wcfGroupID, articIeID, threadID, boardID, mediaID);
) ;
ALTER TABLE wcf1_gman_group ADD FOREIGN KEY (articIeID) REFERENCES wcf1_article (articleID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_group ADD FOREIGN KEY (threadID) REFERENCES wbb1_thread (threadID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_group ADD FOREIGN KEY (boardID) REFERENCES wbb1_board (boardID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_group ADD FOREIGN KEY (mediaID) REFERENCES wcf1_media (mediaID) ON DELETE SET NULL;
DROP TABLE IF EXISTS wcf1_gman_wow_realm;
CREATE TABLE wcf1_gman_wow_realm (
name VARCHAR(30) NOT NULL PRIMARY KEY,
type VARCHAR(20) NOT NULL DEFAULT '',
population VARCHAR(10) NOT NULL DEFAULT '',
queue TINYINT(1) NULL DEFAULT 0,
status TINYINT(2) NOT NULL DEFAULT 0,
slug VARCHAR(30) NOT NULL,
battlegroup VARCHAR(50) NOT NULL DEFAULT '',
timezone VARCHAR(25) NOT NULL DEFAULT '',
connected_realms TEXT NULL,
locale VARCHAR(6) NOT NULL DEFAULT '',
lastUpdate INT(10) NOT NULL
);
DROP TABLE IF EXISTS wcf1_gman_wow_character;
CREATE TABLE wcf1_gman_wow_character (
charID VARCHAR(35) NOT NULL PRIMARY KEY,
userID INT(10) NULL,
isMain TINYINT(1) NOT NULL DEFAULT 0,
inGuild TINYINT(1) NOT NULL DEFAULT 0,
realmID VARCHAR(30) NOT NULL ,
bnetData TEXT NULL,
primaryGroup INT(10) NULL,
groups VARCHAR(100) NOT NULL,
bnetUpdate INT(10) NOT NULL,
firstSeen INT(10) NOT NULL,
guildRank TINYINT(2) NULL DEFAULT 11,
averageItemLevel smallint(5) NULL,
averageItemLevelEquipped smallint(5) NULL,
head TEXT NULL,
neck TEXT NULL,
shoulder TEXT NULL,
back TEXT NULL,
chest TEXT NULL,
shirt TEXT NULL,
wrist TEXT NULL,
hands TEXT NULL,
waist TEXT NULL,
legs TEXT NULL,
feet TEXT NULL,
finger1 TEXT NULL,
finger2 TEXT NULL,
trinket1 TEXT NULL,
trinket2 TEXT NULL,
mainHand TEXT NULL,
offHand TEXT NULL,
KEY(userID, realmID, primaryGroup)
) ;
ALTER TABLE wcf1_gman_wow_character ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_wow_character ADD FOREIGN KEY (primaryGroup) REFERENCES wcf1_gman_group (groupID) ON DELETE SET NULL;
DROP TABLE IF EXISTS wcf1_gman_guild;
CREATE TABLE wcf1_gman_guild (
guildID SMALLINT(4) NOT NULL PRIMARY KEY,
articleID INT(10) NULL,
pageID INT(10) NULL,
leaderID VARCHAR(35) NULL,
birthday INT(10) NOT NULL,
logoID INT(10) NULL,
bnetUpdate INT(10) NOT NULL,
bnetData TEXT NULL,
KEY(leaderID, articleID, pageID)
);
ALTER TABLE wcf1_gman_guild ADD FOREIGN KEY (articleID) REFERENCES wcf1_article (articleID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_guild ADD FOREIGN KEY (pageID) REFERENCES wcf1_page (pageID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_guild ADD FOREIGN KEY (leaderID) REFERENCES wcf1_gman_wow_character (charID) ON DELETE RESTRICT;
DROP TABLE IF EXISTS wcf1_gman_application;
CREATE TABLE wcf1_gman_application (
appID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
threadID INT(10) NULL ,
pollID INT(10) DEFAULT NULL ,
charID VARCHAR(35) NULL ,
name VARCHAR(50) NOT NULL,
autoClose TINYINT(10) NOT NULL DEFAULT 0,
pollEnd INT(10) NOT NULL,
assignedOfficerID INT(10) NULL,
interviewDate INT(10) NOT NULL ,
appState TINYINT(1) NOT NULL DEFAULT 0,
openDate INT(10) NOT NULL,
KEY (assignedOfficerID, threadID, pollID)
) ;
ALTER TABLE wcf1_gman_application ADD FOREIGN KEY (assignedOfficerID) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_application ADD FOREIGN KEY (threadID) REFERENCES wbb1_thread (threadID) ON DELETE SET NULL;
DROP TABLE IF EXISTS wcf1_gman_pointtype;
CREATE TABLE wcf1_gman_pointtype (
typeID SMALLINT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
groupID INT(10) NOT NULL,
content VARCHAR(250) NOT NULL DEFAULT ''
) ;
DROP TABLE IF EXISTS wcf1_gman_pointtrans;
CREATE TABLE wcf1_gman_pointtrans (
transID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
charID VARCHAR(35) NULL,
groupID INT(10) NULL,
eventID INT(10) NULL,
amount SMALLINT(4) NOT NULL,
typeID SMALLINT(4) NULL,
itemID INT(10) NOT NULL DEFAULT 0,
comment VARCHAR(250) NOT NULL DEFAULT '' ,
issuerID INT(10) NULL,
transDate INT(10) NOT NULL,
autoDelete TINYINT(1) NOT NULL DEFAULT 0,
deleteDate INT(10) NULL
KEY (deleteDate, autoDelete, charID, groupID, typeID)
) ;
ALTER TABLE wcf1_gman_pointtrans ADD FOREIGN KEY (issuerID) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_pointtrans ADD FOREIGN KEY (eventID) REFERENCES calendar1_event (eventID) ON DELETE SET NULL;
ALTER TABLE wcf1_gman_pointtrans ADD FOREIGN KEY (charID) REFERENCES wcf1_gman_wow_character (charID) ON DELETE CASCADE;
ALTER TABLE wcf1_gman_pointtrans ADD FOREIGN KEY (typeID) REFERENCES wcf1_gman_pointtype (typeID) ON DELETE RESTRICT;
DROP TABLE IF EXISTS wcf1_gman_wow_classes;
CREATE TABLE wcf1_gman_wow_classes (
wclassID INT(10) NOT NULL PRIMARY KEY,
mask INT(10) NOT NULL,
powerType VARCHAR(15) NOT NULL ,
name VARCHAR(20) NOT NULL ,
color VARCHAR(12) NOT NULL
) ;
INSERT INTO wcf1_gman_wow_classes (wclassID, mask, powerType, name, color) VALUES ('1', '1', 'rage', 'Krieger', '#C79C6E'), ('2', '2', 'mana', 'Paladin', '#F58CBA'), ('3', '4', 'focus', 'Jäger', '#ABD473'), ('4', '8', 'energy', 'Schurke', '#FFF569'), ('5', '16', 'mana', 'Priester', '#FFFFFF'), ('6', '32', 'runic-power', 'Todesritter', '#C41F3B'), ('7', '64', 'mana', 'Schamane', '#0070DE'), ('8', '128', 'mana', 'Magier', '#69CCF0'), ('9', '256', 'mana', 'Hexenmeister', '#9482C9'), ('10', '512', 'energy', 'Mönch', '#00FF96'), ('11', '1024', 'mana', 'Druide', '#FF7D0A'), ('12', '2048', 'fury', 'Dämonenjäger', '#A330C9')
DROP TABLE IF EXISTS wcf1_gman_wow_races;
CREATE TABLE wcf1_gman_wow_races (
wraceID INT(10) NOT NULL PRIMARY KEY,
mask INT(10) NOT NULL,
side VARCHAR(20) NOT NULL,
sideID TINYINT(4) NOT NULL,
name VARCHAR(50) NOT NULL
) ;
INSERT INTO wcf1_gman_wow_races (wraceID, mask, side, sideID, name) VALUES ('1', '1', 'alliance', '0', 'Mensch'), ('2', '2', 'horde', '1', 'Orc'), ('3', '4', 'alliance', '0', 'Zwerg'), ('4', '8', 'alliance', '0', 'Nachtelf'), ('5', '16', 'horde', '1', 'Untoter'), ('6', '32', 'horde', '1', 'Tauren'), ('7', '64', 'alliance', '0', 'Gnom'), ('8', '128', 'horde', '1', 'Troll'), ('9', '256', 'horde', '1', 'Goblin'), ('10', '512', 'horde', '1', 'Blutelf'), ('11', '1024', 'alliance', '0', 'Draenei'), ('22', '2097152', 'alliance', '0', 'Worgen'), ('24', '8388608', 'neutral', '2', 'Pandaren'), ('25', '16777216', 'alliance', '0', 'Pandaren'), ('26', '33554432', 'horde', '1', 'Pandaren');
DROP TABLE IF EXISTS wcf1_gman_wow_acms;
CREATE TABLE wcf1_gman_wow_acms (
acmID INT(10) NOT NULL PRIMARY KEY,
bnetData TEXT NULL ,
bnetUpdate INT(10) NOT NULL
) ;
DROP TABLE IF EXISTS wcf1_gman_wow_gacms;
CREATE TABLE wcf1_gman_wow_gacms (
gacmID INT(10) NOT NULL PRIMARY KEY,
bnetData TEXT NULL,
bnetUpdate INT(10) NOT NULL
) ;
DROP TABLE IF EXISTS wcf1_gman_wow_items;
CREATE TABLE wcf1_gman_wow_items (
itemID INT(10) NOT NULL PRIMARY KEY,
bnetData TEXT NULL,
bnetUpdate INT(10) NOT NULL
) ;
DROP TABLE IF EXISTS wcf1_gman_wow_itemclass;
CREATE TABLE wcf1_gman_wow_itemclass (
itemclassID INT(10) NOT NULL PRIMARY KEY,
bnetData TEXT NULL ,
bnetUpdate INT(10) NOT NULL
) ;
DROP TABLE IF EXISTS wcf1_gman_guild_acm;
CREATE TABLE wcf1_gman_guild_acm (
guildAcmID int(5) NOT NULL PRIMARY KEY,
gacmID int(5) NOT NULL,
gacmTime int(10) NOT NULL,
articelID int(10) NULL
)
DROP TABLE IF EXISTS wcf1_gman_feedlist;
CREATE TABLE wcf1_gman_feedlist (
type enum('ACHIEVEMENT','CRITERIA','LOOT','BOSSKILL') NOT NULL ,
charID VARCHAR(35) NULL,
itemID INT(10) NULL,
acmID INT(10) NULL,
quantity INT(10) NOT NULL,
bonusLists TEXT NULL,
context TEXT NULL,
feedTime INT(10) NOT NULL,
inGuild TINYINT(1) NOT NULL DEFAULT 1,
KEY (charID, feedTime)
) ;
ALTER TABLE wcf1_gman_feedlist ADD CONSTRAINT charId_feedTime_UQ UNIQUE (charID, feedTime);
ALTER TABLE wcf1_gman_feedlist ADD FOREIGN KEY (charID) REFERENCES wcf1_gman_wow_character (charID) ON DELETE CASCADE;
Display More
Vielleicht hat ja jemand den entschiedenen Tipp