неверное значение в строке, несмотря на правильное количество столбцов - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь вставить массив значений в свою базу данных и получаю сообщение об ошибке ER_WRONG_VALUE_COUNT_ON_ROW

Вот моя схема:

CREATE TABLE reviews (
  id INTEGER AUTO_INCREMENT,
  shoe_id INTEGER,
  review_star INTEGER,
  review_body CHAR (255) NULL DEFAULT NULL,
  review_username CHAR (255) NULL DEFAULT NULL,
  review_date CHAR (255) NULL DEFAULT NULL,
  review_location CHAR (255) NULL DEFAULT NULL,
  upStar INTEGER,
  downStar INTEGER,
  review_title CHAR (255) NULL DEFAULT NULL,
  PRIMARY KEY (id)
);

Вот мой запрос:

var values = [[1, 1], [2, 2], ['b', 'b'], ['n', 'n'], ['d', 'd'], ['l', 'l'], [3, 3], [4, 4], ['t', 't']]

const testSeed = function() {
  connection.query(`insert into reviews (shoe_id, review_star, review_body, review_username, review_date, review_location, upStar, downStar, review_title) values ?`, [values], function(err) {
    if (err) {
      console.log(err);
    } else {
      console.log('yay it worked')
    }
  })
}

Я могу передать данные по одной записи за раз, но если я попытаюсь отправить несколько значений по одному, это не сработает. Ошибка, которую я получаю, не имеет смысла, потому что у меня есть правильное количество записей для количества столбцов, которые у меня есть.

1 Ответ

2 голосов
/ 07 октября 2019

Вы неправильно сформулировали свой кортеж VALUES. В настоящее время вы проходите в 9 строк, каждая из которых имеет два значения столбца. Но вам нужно противоположное, а именно 2 строки из 9 значений столбцов:

var values = [
                 [1, 2, 'b', 'n', 'd', 'l', 3, 4, 't'],
                 [1, 2, 'b', 'n', 'd', 'l', 3, 4, 't']
             ]

Вышеприведенное будет соответствовать по крайней мере вашему оператору вставки, в котором указаны 9, а не 2 столбцов.

...