14

Im not able to use bulk insert in my DB using node.js lib mysljs.

I followed answers from:

How do I do a bulk insert in mySQL using node.js

with no success.

var sql = "INSERT INTO resources (resource_container_id, name, title, extension, mime_type, size) VALUES ?";

var values = [
  [1, 'pic1', 'title1', '.png', 'image/png', 500], 
  [1, 'pic2', 'title2', '.png', 'image/png', 700]];

return connection.query(sql, [values], (result) => {
    if (err) throw err;
    connection.end();
});

I keep getting error:

 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'?\' at line 1' 

I also tried to promisify the query mehod using bluebird but with no success, I get same error again.

Community
  • 1
  • 1
Ivan Pandžić
  • 598
  • 5
  • 20
  • typo in the callback there should be `(err, result)=>{...}` but that is likely not the error you describe here, since the err is actualy printed at some point so i assume that it's just a copy error. – Tomáš Růžička Jun 03 '21 at 22:34

4 Answers4

1

You need to mark your keys with the grave accent (backtick) character, like this: `key`

Making your query like this:

var sql = "INSERT INTO resources (`resource_container_id`, `name`, `title`, `extension`, `mime_type`, `size`) VALUES ?";
Unicco
  • 2,466
  • 1
  • 26
  • 30
1

try using () around the question mark

var sql = "INSERT INTO resources (resource_container_id, name, title, extension, mime_type, size) VALUES (?) ";

Namit Piriya
  • 141
  • 7
1

I have the same issue only when i use connection.execute() and then it's actually because it is not implemented for prepared statements.

I resolved the issue by using connection.query() instead.

Don't know if that answer helps anyone tho.

It would help me when I was searching for the answer.

-2

Try removing the square brackets around values

Silvio
  • 1
  • 3