2013-05-02 2 views
-3

Я получаю сообщение об ошибке от MySQL, который о сообщении наиболее бесполезных ошибок я когда-либо видел:Смутная ошибка SQL ... что здесь происходит?

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 'NOT NULL, 
PRIMARY KEY (userID, tweetID), 
FOREIGN KEY (userID) REFERENCES User(' at line 4 

Отлично, проверьте руководство ...>_ _>

Вот источник SQL; Я уверен, что это будет чрезвычайно просто для всех, кто знаком с SQL, но я новичок. Для меня все выглядит отлично.

Мне очень хотелось бы иметь более корректный вопрос, чем «какая у меня ошибка», но с сообщением об ошибке настолько расплывчатым, и у меня такой небольшой опыт, что я почти потерялся.

CREATE TABLE User (
    username  VARCHAR(20)  NOT NULL, 
    userID   INTEGER   NOT NULL, 
    fullName  VARCHAR(100), 
    passwordHash VARCHAR(256) NOT NULL, 
    email   VARCHAR(256) NOT NULL, 
    imageURL  VARCHAR(200), 
    facebookURL  VARCHAR(200), 
    tagline   VARCHAR(140), 
    memberSince  TIMESTAMP  NOT NULL, 
    PRIMARY KEY (userID) 
); 

CREATE TABLE Tweet (
    tweetID INTEGER     NOT NULL, 
    userID INTEGER     NOT NULL, 
    content VARCHAR(140)   NOT NULL, 
    TIMESTAMP      NOT NULL, 
    PRIMARY KEY (tweetID), 
    FOREIGN KEY (userID) REFERENCES User(userID) 
); 

CREATE TABLE HashTag (
    tweetID INTEGER     NOT NULL, 
    content VARCHAR(140)   NOT NULL, 
    PRIMARY KEY (content), 
    FOREIGN KEY (tweetID) REFERENCES Tweet(tweetID) 
); 

CREATE TABLE Follows (
    follower INTEGER    NOT NULL, 
    followee INTEGER    NOT NULL, 
    PRIMARY KEY (follower, followee), 
    FOREIGN KEY (follower) REFERENCES User(userID), 
    FOREIGN KEY (followee) REFERENCES User(userID) 
); 

CREATE TABLE Retweets (
    tweetID INTEGER     NOT NULL, 
    userID INTEGER     NOT NULL, 
    TIMESTAMP      NOT NULL, 
    PRIMARY KEY (userID, tweetID), 
    FOREIGN KEY (userID) REFERENCES User(userID), 
    FOREIGN KEY (tweetID) REFERENCES Tweet(tweetID) 
); 

CREATE TABLE Mentions (
    tweetID INTEGER     NOT NULL, 
    userID INTEGER     NOT NULL, 
    PRIMARY KEY (tweetID, userID), 
    FOREIGN KEY (tweetID) REFERENCES Tweet(tweetID), 
    FOREIGN KEY (userID) REFERENCES User(userID) 
); 

CREATE TABLE Favorites (
    tweetID INTEGER     NOT NULL, 
    userID INTEGER     NOT NULL, 
    PRIMARY KEY (tweetID, userID), 
    FOREIGN KEY (tweetID) REFERENCES Tweet(tweetID), 
    FOREIGN KEY (userID) REFERENCES User(userID) 
); 

CREATE TABLE CanSee (
    tweetID INTEGER     NOT NULL, 
    userID INTEGER     NOT NULL, 
    PRIMARY KEY (tweetID, userID), 
    FOREIGN KEY (tweetID) REFERENCES Tweet(tweetID), 
    FOREIGN KEY (userID) REFERENCES User(userID) 
); 

CREATE TABLE Message (
    messageID INTEGER    NOT NULL, 
    senderID INTEGER    NOT NULL, 
    receiverID INTEGER    NOT NULL, 
    content VARCHAR(140)   NOT NULL, 
    TIMESTAMP      NOT NULL, 
    PRIMARY KEY (messageID), 
    FOREIGN KEY (senderID) REFERENCES User(userID), 
    FOREIGN KEY (receiverID) REFERENCES User(userID) 
); 
+0

'TIMESTAMP NOT NULL,' вы можете обратиться к этому – Ejaz

ответ

3

Когда он говорит «NEAR __» он говорит, что что-то прямо перед тем, что точка вызвало ошибку.

В этом случае это слово TIMESTAMP. Вы указали тип TIMESTAMP для этого столбца, но не дали ему имени. Возможно, это должно быть modified_on TIMESTAMP (или что-то в этом роде).

+0

А, это было бы так. Большое спасибо! Определенно оценили. –

Смежные вопросы