2013-11-15 3 views
5

Кажется, что это должно быть очень просто, и я застрял около двух часов. Четыре отдельных человека смотрели и не обнаружили очевидной проблемы. Поэтому я снова обращаюсь к сообществу SO.Ошибка INSERT INTO с mysql-node

Настоящий прост - я просто пытаюсь вставить данные в базу данных mysql через mysql-node. Я не получаю никаких ошибок соединения, и SELECT работает нормально. Код используется является:

exports.postNewCast = function(data, res) { 
    var query = "INSERT INTO cast (name, portrait, role, bio) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');"; 
    console.log(query); 
    dbConnection.query(query, data, function(err, result) { 
    if (err) { 
     console.log(err); 
    } else { 
     sendResponse(res, "Cast Member Added", 201); 
    } 
    }); 
}; 

Ошибка после входа в:

{ [Error: ER_PARSE_ERROR: 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 'cast (name, portrait, role, bio) VALUES ('Jessie', 'images/cast/marissa.jpg', 'L' at line 1] 
    code: 'ER_PARSE_ERROR', 
    errno: 1064, 
    sqlState: '42000', 
    index: 0 } 

Странная часть (для меня), что я могу скопировать из моего окна терминала (когда сервер работает) console.logged строку запроса и вставьте ее в командную строку mysql, и она работает нормально. Я попытался использовать GRANT, чтобы убедиться, что сервер пользователя работает, имеет разрешения, и это ничего не делало. Я пробовал копировать/вставлять синтаксис INSERT INTO прямо из рабочих источников и заменять только свои поля, зависящие от данных. Я пробовал использовать VALUES? а затем объект данных и получил тот же результат.

Какая глупость я делаю?

Спасибо.

+5

добавить 'around имя таблицы, например' \ 'cast \' ' –

+1

Это были обратные тики. Я думал, вы имеете в виду одиночные кавычки, и это не сработало. Но обратные клещи сделали это. – DrHall

ответ

7

Илья Бурсов было это правильно, добавив этот ответ для потомков. Я не уверен, что «cast» - это зарезервированное слово или что-то, но мне нужны обратные тики («` ») вокруг имени таблицы, чтобы заставить его работать.

1

Попробуйте поставить `` вокруг каждого имени столбца, как этот

"INSERT INTO cast (`name`, `portrait`, `role`, `bio`) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');";