简体   繁体   中英

MySQL trouble getting FOREIGN KEY command to work

everything i find says something about the two items im trying to pull are different from their parent in some way but they arentthough

 CREATE TABLE Servers ( serverId VARCHAR(255) NOT NULL PRIMARY KEY, serverName VARCHAR(255) NOT NULL, serverOwnerId VARCHAR(255) NOT NULL, serverOwnerName VARCHAR(255) NOT NULL, paidRole BOOLEAN NOT NULL ); CREATE TABLE ServerConfigurable ( serverId VARCHAR(255) NOT NULL PRIMARY KEY, serverName VARCHAR(255) NOT NULL, cmdPrefix VARCHAR(16) DEFAULT '!', globalUngate BOOLEAN NOT NULL, globalAutoungate BOOLEAN NOT NULL, autoungateWebhook VARCHAR(255) NOT NULL, ungateWebhook VARCHAR(255) NOT NULL, embedHexcolor VARCHAR(32) NOT NULL, webhookName VARCHAR(255) DEFAULT 'Gate Bot', webhookImage VARCHAR(255) DEFAULT 'https://imgur.com/a/eIULgfA', footerMessage VARCHAR(255) DEFAULT 'Gate Bot V1.0.1', footerImage VARCHAR(255) DEFAULT 'https://imgur.com/a/eIULgfA', FOREIGN KEY Servers REFERENCES Servers(serverId), FOREIGN KEY Servers REFERENCES Servers(serverName) );

and the error i get is

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES Servers(serverId), FOREIGN KEY serverName REFERENCES Servers(serverNa' at line 14

Every referencd column has to have an index

So you can do

CREATE TABLE Servers (
serverId VARCHAR(255) NOT NULL PRIMARY KEY,
serverName VARCHAR(255) NOT NULL,
serverOwnerId VARCHAR(255) NOT NULL,
serverOwnerName VARCHAR(255) NOT NULL,
paidRole BOOLEAN NOT NULL,
KEY(serverName)
);

CREATE TABLE ServerConfigurable (
serverId VARCHAR(255) NOT NULL PRIMARY KEY,
serverName VARCHAR(255) NOT NULL,
cmdPrefix VARCHAR(16) DEFAULT '!',
globalUngate BOOLEAN NOT NULL,
globalAutoungate BOOLEAN NOT NULL,
autoungateWebhook VARCHAR(255) NOT NULL,
ungateWebhook VARCHAR(255) NOT NULL,
embedHexcolor VARCHAR(32) NOT NULL,
webhookName VARCHAR(255) DEFAULT 'Gate Bot',
webhookImage VARCHAR(255) DEFAULT 'https://imgur.com/a/eIULgfA',
footerMessage VARCHAR(255) DEFAULT 'Gate Bot V1.0.1',
footerImage VARCHAR(255) DEFAULT 'https://imgur.com/a/eIULgfA',
FOREIGN KEY (serverId) REFERENCES Servers(serverId),
FOREIGN KEY (serverName) REFERENCES Servers(serverName)
);

Or Do something like this

CREATE TABLE Servers (
serverId VARCHAR(255) NOT NULL PRIMARY KEY,
serverName VARCHAR(255) NOT NULL,
serverOwnerId VARCHAR(255) NOT NULL,
serverOwnerName VARCHAR(255) NOT NULL,
paidRole BOOLEAN NOT NULL,
KEY(serverId,serverName)
);

CREATE TABLE ServerConfigurable (
serverId VARCHAR(255) NOT NULL PRIMARY KEY,
serverName VARCHAR(255) NOT NULL,
cmdPrefix VARCHAR(16) DEFAULT '!',
globalUngate BOOLEAN NOT NULL,
globalAutoungate BOOLEAN NOT NULL,
autoungateWebhook VARCHAR(255) NOT NULL,
ungateWebhook VARCHAR(255) NOT NULL,
embedHexcolor VARCHAR(32) NOT NULL,
webhookName VARCHAR(255) DEFAULT 'Gate Bot',
webhookImage VARCHAR(255) DEFAULT 'https://imgur.com/a/eIULgfA',
footerMessage VARCHAR(255) DEFAULT 'Gate Bot V1.0.1',
footerImage VARCHAR(255) DEFAULT 'https://imgur.com/a/eIULgfA',
FOREIGN KEY (serverId,serverName) REFERENCES Servers(serverId,serverName)
);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM