MySQL + DB toolkit
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
MySQL + DB toolkit
Задача: с некоторой периодичностью кидать 50 строк в базу.
Использую MySQL + DB toolkit.
Чтобы процесс не занимал много времени, создаю запрос вида
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 5, '2015-11-30 11:33:32', 1000.0000000000);
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 6, '2015-11-30 11:33:32', 1001.0000000000);
(все 50 строк)
получаю ошибку:
Error -2147217900 occurred at NI_Database_API.lvlib:Conn Execute.vi->PC_procc_pack2.vi:6020001->test_write_data.vi
Possible reason(s):
ADO Error: 0x80040E14
Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [MySQL][ODBC 5.3(a) Driver][mysqld-5.5.46-log]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 '11:33:32, 1000.0000000000);
INSERT INTO datet (Controller, Channel, Time, value' at line 1 in NI_Database_API.lvlib:Conn Execute.vi->PC_procc_pack2.vi:6020001->test_write_data.vi
копирую эти строки и отправляю в MySQL workbenсh, запрос успешно выполняется (данные добавляются).
Перепробовал кавычки, одинарные кавычки, без кавычек. На всё ругается, причём место примерно одно и то же.
В чём глюк, что не так в запросе?
В принципе проблему решил через DB Tools Insert Data VI (кидаю по строке), но обработка занимает приличное время, хочется ускориться.
Использую MySQL + DB toolkit.
Чтобы процесс не занимал много времени, создаю запрос вида
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 5, '2015-11-30 11:33:32', 1000.0000000000);
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 6, '2015-11-30 11:33:32', 1001.0000000000);
(все 50 строк)
получаю ошибку:
Error -2147217900 occurred at NI_Database_API.lvlib:Conn Execute.vi->PC_procc_pack2.vi:6020001->test_write_data.vi
Possible reason(s):
ADO Error: 0x80040E14
Exception occured in Microsoft OLE DB Provider for ODBC Drivers: [MySQL][ODBC 5.3(a) Driver][mysqld-5.5.46-log]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 '11:33:32, 1000.0000000000);
INSERT INTO datet (Controller, Channel, Time, value' at line 1 in NI_Database_API.lvlib:Conn Execute.vi->PC_procc_pack2.vi:6020001->test_write_data.vi
копирую эти строки и отправляю в MySQL workbenсh, запрос успешно выполняется (данные добавляются).
Перепробовал кавычки, одинарные кавычки, без кавычек. На всё ругается, причём место примерно одно и то же.
В чём глюк, что не так в запросе?
В принципе проблему решил через DB Tools Insert Data VI (кидаю по строке), но обработка занимает приличное время, хочется ускориться.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: MySQL + DB toolkit
Может, дело в формате даты/времени. Посмотрите, как кодирует формат даты штатная функция, поменяйте дату и время местами.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: MySQL + DB toolkit
Если ты пишешь сразу во все поля, то их по идее прописывать не обязательно, можно попробовать запрос типа:Artem.spb писал(а):Чтобы процесс не занимал много времени, создаю запрос вида
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 5, '2015-11-30 11:33:32', 1000.0000000000);
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 6, '2015-11-30 11:33:32', 1001.0000000000);
Код: Выделить всё
INSERT INTO datet VALUES (1, 6, '2015-11-30 11:33:32', 1001.0000000000);
Так же при записи сразу нескольких строк, можно сделать так:
Код: Выделить всё
INSERT INTO datet VALUES (1, 6, '2015-11-30 11:33:32', 1001.0000000000), (1, 6, '2015-11-30 11:33:33', 1002.0000000000), (1, 6, '2015-11-30 11:33:33', 1003.0000000000);
Код: Выделить всё
INSERT INTO datet VALUES ('1', '6', '2015-11-30 11:33:32', '1001.0000000000');
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: MySQL + DB toolkit
формат взял из справки:Borjomy_1 писал(а):Может, дело в формате даты/времени. Посмотрите, как кодирует формат даты штатная функция, поменяйте дату и время местами.
http://www.mysql.ru/docs/man/DATETIME.html
Сейчас посмотрю, как без неё совсем
Пишу не во все поля, поэтому и указываю их. Есть ключевое поле, которое я не трогаю.IvanLis писал(а): Если ты пишешь сразу во все поля, то их по идее прописывать не обязательно, можно попробовать запрос типа:
Код: Выделить всё
INSERT INTO datet VALUES (1, 6, '2015-11-30 11:33:32', 1001.0000000000);
Экранировать - это одинарные кавычки? пробовал, не помоглоIvanLis писал(а):Попробуй экранировать все значения, этого в принципе не нужно делать, но может поможет:
Код: Выделить всё
INSERT INTO datet VALUES ('1', '6', '2015-11-30 11:33:32', '1001.0000000000');
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: MySQL + DB toolkit
С датой всё норм, в итоге заработал такой вариант:
Спасибо за подсказку.
Код: Выделить всё
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 5, '2015-11-30 11:33:32', 1000.0000000000), (1, 6, '2015-11-30 11:33:32', 1000.0000000000), (1, 7, '2015-11-30 11:33:32', 1002.0000000000), (1, 8, '2015-11-30 11:33:32'
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: MySQL + DB toolkit
А можно спросить, чем отличается тот вариант, который работает от первоначального??? Я что-то различий не нашел...
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: MySQL + DB toolkit
Было
стало
Я пытался каждую строку данных отправлять отдельной строкой запроса. Почему-то такой вариант тулкиту не нравится. причём сегодня в ошибке было явно указано "во второй строке".
Получилось, что надо все строки через запятую задавать.
Код: Выделить всё
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 5, '2015-11-30 11:33:32', 1000.0000000000);
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 6, '2015-11-30 11:33:32', 1001.0000000000);
Код: Выделить всё
INSERT INTO datet (Controller, Channel, Time, value) VALUES (1, 5, '2015-11-30 11:33:32', 1000.0000000000), (1, 6, '2015-11-30 11:33:32', 1000.0000000000), (1, 7, '2015-11-30 11:33:32', 1002.0000000000);
Получилось, что надо все строки через запятую задавать.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: MySQL + DB toolkit
Сейчас некогда искать, но сталкивался с подобной ерундой при работе с БД Access через ADO из под VBA.Artem.spb писал(а):Я пытался каждую строку данных отправлять отдельной строкой запроса. Почему-то такой вариант тулкиту не нравится. причём сегодня в ошибке было явно указано "во второй строке".
Получилось, что надо все строки через запятую задавать.
Там тоже нужно или пачкой писать, или по одному, но после каждой записи обновлять таблицу, типа UpDate. Это наверное потому, что работа ведется не непосредственно с таблицей, а с сущностью.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 2 Ответы
- 85 Просмотры
-
Последнее сообщение jane_wild