Próbuję utworzyć tabelę odwołującą się do innej tabeli w moim db, jednak otrzymuję ten błąd.
#1064 - 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 "UInt32 PRIMARY KEY, name VARCHAR(20), handle VARCHAR(20), countryName VARCHAR(20" at line 1
Spojrzałem na błąd nr 1064 na mySQL strona refrence, ale jej błąd wartości vuage tylko podając zarys swojej struktury.
Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR)
Message: %s near "%s" at line %d
jest to kod, który próbowałem wykonać
CREATE TABLE User (userID UInt32 PRIMARY KEY, name VARCHAR(20), handle VARCHAR(20), countryName VARCHAR(20) references Countries(SID))engine=innodb;
Tabela krajów została już utworzona, więc nie jestem całkowicie pewien, co powoduje problem
jakakolwiek pomoc byłaby bardzo doceniana.
nie w ten sposób zdefiniowałem kraje
CREATE TABLE Countries (countryName VARCHAR(20) PRIMARY KEY)engine=innodb;
Odpowiedzi:
1 dla odpowiedzi № 1ZAKTUALIZOWANA odpowiedź:
Przeniesienie definicji ograniczenia z definicji tabeli pomogło w wyizolowaniu problemu:
CREATE TABLE User(
userID UInt32 PRIMARY KEY
,name VARCHAR(20)
,handle VARCHAR(20)
,countryName VARCHAR(20)
)engine=innodb;
ALTER TABLE user ADD CONSTRAINT user_country_name_fk FOREIGN KEY(countryName) REFERENCES Countries(SID);
Niepowodzenie tworzenia tabeli spowodowane było używaniem UInt32
typ danych. Zmienić na int
tworzenie tabel zakończyło się powodzeniem.
Ograniczenie klucza obcego odnosiło się do niewłaściwej kolumny w Countries
. Chodziło o SID
ale potrzebne do odniesienia countryName
.