Node js JSON строка вставляется в БД, но не может обновить ту же JSON строку - PullRequest
0 голосов
/ 15 апреля 2020

Я столкнулся со странной ошибкой. Я добавляю данные, которые отправляю с Vue ax ios post в базу данных, столбец этих данных, который преобразуется в JSON объект с JSON .stringfy. Когда я попытаюсь обновить эту строку позже, могу ли я поделиться идеей, что у меня появляется следующая ошибка? Я поделился SQL строкой ниже.

{
  id: null,
  table_id: 1425,
  user_id: 15,
  order_time: 1586975000253,
  order_status: 1,
  order: [
    {
      product: 8,
      amount: 1,
      portion: [Object],
      order_time: 1586974979254,
      status: 0,
      desc: ''
    },
    {
      product: 4,
      amount: 1,
      portion: [Object],
      order_time: 1586974979707,
      status: 0,
      desc: ''
    },
    {
      product: 8,
      amount: 1,
      portion: [Object],
      order_time: 1586974980271,
      status: 0,
      desc: ''
    }
  ],
  corp: 'sssxx'
}
ER_PARSE_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 'order = '[{\"product\":8,\"amount\":1,\"portion\":{\"id\":1,\"title\":\"Tam Pors' at line 1

UPDATE orders SET order = '[{\\"product\\":8,\\"amount\\":1,\\"portion\\":{\\"id\\":1,\\"title\\":\\"Tam Porsiyon\\",\\"price\\":\\"25\\"},\\"order_time\\":1586974979254,\\"status\\":0,\\"desc\\":\\"\\"},{\\"product\\":4,\\"amount\\":1,\\"portion\\":{\\"id\\":1,\\"title\\":\\"Tam Porsiyon\\",\\"price\\":\\"25\\"},\\"order_time\\":1586974979707,\\"status\\":0,\\"desc\\":\\"\\"},{\\"product\\":8,\\"amount\\":1,\\"portion\\":{\\"id\\":1,\\"title\\":\\"Tam Porsiyon\\",\\"price\\":\\"25\\"},\\"order_time\\":1586974980271,\\"status\\":0,\\"desc\\":\\"\\"}]', order_status = 1 WHERE id = NULL AND table_id = 1425 and corp = 'sssxx'

1 Ответ

1 голос
/ 15 апреля 2020

Проблема с вашим кодом не имеет ничего общего с использованием JSON.

Слово order является зарезервированным ключевым словом. См. https://mariadb.com/kb/en/reserved-words/ Вы не можете использовать его в качестве имени столбца, если не разделите его обратными галочками:

UPDATE orders SET `order` = ...whatever...

Подсказка в сообщении об ошибке состоит в том, что он жаловался на слово order, не о чем-либо в вашем JSON.

... для правильного синтаксиса, чтобы использовать около 'order = ...

Синтаксические ошибки покажет вам точно точку в вашем синтаксисе SQL, где анализатор запутался.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...