CREATE TABLE nodes (
    id INTEGER PRIMARY KEY NOT NULL,
    lat REAL,
    lon REAL,
    user TEXT,
    uid INTEGER,
    version INTEGER,
    changeset INTEGER,
    timestamp TEXT
);                       # this worked

CREATE TABLE nodes_tags (
    id INTEGER,
    key TEXT,
    value TEXT,
    type TEXT,
    FOREIGN KEY (id) REFERENCES nodes(id)
);                      # this did not work

CREATE TABLE ways (
    id INTEGER PRIMARY KEY NOT NULL,
    user TEXT,
    uid INTEGER,
    version TEXT,
    changeset INTEGER,
    timestamp TEXT
);                      # this worked

CREATE TABLE ways_tags (
    id INTEGER NOT NULL,
    key TEXT NOT NULL,
    value TEXT NOT NULL,
    type TEXT,
    FOREIGN KEY (id) REFERENCES ways(id)
);                      # this did not work

CREATE TABLE ways_nodes (
    id INTEGER NOT NULL,
    node_id INTEGER NOT NULL,
    position INTEGER NOT NULL,
    FOREIGN KEY (id) REFERENCES ways(id),
    FOREIGN KEY (node_id) REFERENCES nodes(id)
);                      # this did not work

त्रुटि कोड: 1064. आपको अपने SQL सिंटैक्स में त्रुटि है; लाइन 3 पर 'मान टेक्स्ट, टाइप टेक्स्ट, विदेशी कुंजी (आईडी) संदर्भ नोड्स (आईडी))' के पास उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके मारियाडीबी सर्वर संस्करण से मेल खाने वाले मैनुअल की जांच करें।

इस स्थिति में अल्पविराम मान्य इनपुट नहीं है

1
Rex 30 अक्टूबर 2018, 14:02

1 उत्तर

सबसे बढ़िया उत्तर

Key एक MySQL में आरक्षित कीवर्ड। आपको वास्तव में इसे टेबल/कॉलम नाम के रूप में उपयोग करने से बचना चाहिए। इसे किसी और चीज़ का नाम देने पर विचार करें; अन्यथा आपको इसके चारों ओर बैकटिक्स का उपयोग करना होगा।

CREATE TABLE nodes_tags (
    id INTEGER,
    `key` TEXT,  -- I'd prefer renaming it. eg: node_key
    value TEXT,
    type TEXT,
    FOREIGN KEY (id) REFERENCES nodes(id)
);

CREATE TABLE ways_tags (
    id INTEGER NOT NULL,
    `key` TEXT NOT NULL,  -- I'd prefer renaming it. eg: ways_tags_key
    value TEXT NOT NULL,
    type TEXT,
    FOREIGN KEY (id) REFERENCES ways(id)
); 
1
Madhur Bhaiya 30 अक्टूबर 2018, 11:04