2013-11-15 12 views
5

Điều này có vẻ như nó phải là siêu dễ dàng, và tôi đã bị mắc kẹt trong khoảng hai giờ bây giờ. Bốn người riêng biệt đã xem xét và không tìm thấy một vấn đề rõ ràng. Vì vậy, một lần nữa tôi chuyển sang cộng đồng SO.INSERT INTO lỗi với mysql-node

Thật đơn giản - Tôi chỉ đang cố chèn dữ liệu vào cơ sở dữ liệu mysql qua nút mysql. Tôi không nhận được lỗi kết nối, và SELECT hoạt động tốt. Các mã được sử dụng là:

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); 
    } 
    }); 
}; 

Các lỗi được đăng nhập là:

{ [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 } 

Phần lạ (đối với tôi) là tôi có thể sao chép từ cửa sổ terminal của tôi (nơi máy chủ đang chạy) các chuỗi truy vấn console.logged và dán nó vào dòng lệnh mysql, và nó hoạt động tốt. Tôi đã thử sử dụng GRANT để đảm bảo rằng máy chủ người dùng đang chạy có quyền và điều này không có gì. Tôi đã thử sao chép/dán cú pháp INSERT INTO trực tiếp từ các nguồn làm việc và chỉ thay thế các trường dữ liệu cụ thể của tôi. Tôi đã thử sử dụng VALUES? tùy chọn, theo sau là một đối tượng dữ liệu và nhận được kết quả tương tự.

Vì vậy, tôi đã tạo ra lỗi lầm nào?

Cảm ơn.

+5

thêm 'tên bảng xung quanh, như' \ 'cast \' ' –

+1

Các dấu tích sau là nó. Tôi nghĩ bạn có nghĩa là dấu nháy đơn, và nó không hoạt động. Nhưng ve trở lại đã làm nó. – DrHall

Trả lời

7

Ilya Bursov đã có nó đúng, thêm câu trả lời này cho hậu thế. Tôi không chắc liệu 'cast' có phải là một từ dành riêng hay không, nhưng tôi cần các dấu tick ("` ") xung quanh tên bảng để làm cho nó hoạt động.

1

Cố gắng đưa '' xung quanh mỗi tên cột như thế này

"INSERT INTO cast (`name`, `portrait`, `role`, `bio`) VALUES ('" + data.name + "', '" + data.portrait + "', '" + data.role + "', '" + data.bio + "');"; 
Các vấn đề liên quan