#mysql #sql #node.js #database
#mysql #sql #node.js #База данных
Вопрос:
Я пытаюсь динамически создать оператор mysql, но я продолжаю получать неправильный синтаксис.
const tableName = user_data;
const insertSet = {'id': 1, 'dependents': ['sarah', 'john']}
conn.query('insert into ?? set ?', [tableName, insertSet], (err,rows) => {
if (err) reject(err);
resolve(rows);
}
Когда я пытаюсь это сделать, я получаю следующую ошибку:
У вас ошибка в синтаксисе SQL
В сообщении об ошибке я увидел, что sql, который он пытался запустить, является
insert into user_data set id = 1, dependents='sarah','john';
Он забрал массив из dependents
, и это вызвало синтаксическую ошибку.
Это должно быть
insert into user_data set id = 1, dependents=[ 'sarah','john' ];
Комментарии:
1. MySQL не имеет массивов, просто не может установить
dependents
массив таких строк.2. Что такое тип
dependents
данных?3. Типичный запрос insert использует
values
вместоset
. Используете ли вы какой-то ORM, который переписывает запросы в SQL, или это изначально должно быть SQL?4. Неважно, я всегда забываю, что MySQL допускает и такую вариацию.
5. Массив, на котором я тестирую, на самом деле является логическим. что-то вроде [true, false]. для примера я просто упростил его до string