Вверх ↑
Этот топик читают: Гость
Ответов: 5
Рейтинг: 1
#1: 2015-07-08 13:11:12 ЛС | профиль | цитата
Здравствуйте.

Сервер MySQL 5.1.54
База простая: 1 таблица с именем tel в ней 3 поля с именами idtel, tarif, comment все VARCHAR(10)

Запрос выборки:
SELECT * FROM tel
Запрос добавления:
INSERT INTO tel (idtel,tarif,comment) VALUES ('a','b','c')
Hiasm 4.04 185     Используемые компоненты: dbMySQL, dbMySQL_Query, DS_MySQL, DSC_Query, DS_ODBC


Подключение работает, запрос SELECT работает, а вот например запрос INSERT выдаёт всегда ошибку номер 4 хотя запись в БД появляется!
Проверял через компонент dbMySQL и через источники данных DS_MySQL,DS_ODBC. Только в ODBC ошибка номер 1018, а при совпадении данных ошибка номер 1005.
Библиотеку libmysql.dll менял.
В MySQL.pas и mysqllib.pas заглядывал, не разобрался. Ошибки только err_init = 1; err_connect = 2; err_query = 3; err_store = 4; err_execute = 5. Что значит err_store не нашёл.

На PHP ещё не пробовал думаю там ошибки конкретно видно как и в MySQL Workbench, обычно просто если нет ошибок то запрос успешный.

Как можно выйти из положения чтобы ошибок не было, как проверять или проконтролировать что запрос успешно выполнился?

карма: 0

0
vip
#1.1контекстная реклама от партнеров
Главный модератор
Ответов: 2997
Рейтинг: 395
#2: 2015-07-08 15:15:06 ЛС | профиль | цитата
Возможно, что у Вас не хватает прав на выполнение запроса INSERT.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 16884
Рейтинг: 1239
#3: 2015-07-08 16:28:56 ЛС | профиль | цитата
SolMayers писал(а):
INSERT INTO tel (idtel,tarif,comment) VALUES ('a','b','c')
Насколько я понял idtel - integer ? Да и тариф вроде тоже не строка ?
Зачем 'a' в кавычках ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 4621
Рейтинг: 746
#4: 2015-07-08 16:47:54 ЛС | профиль | цитата
Tad,
SolMayers писал(а):
все VARCHAR(10)

карма: 26

0
Ответов: 16884
Рейтинг: 1239
#5: 2015-07-08 16:49:20 ЛС | профиль | цитата

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 186
Рейтинг: 9
#6: 2015-07-09 09:00:29 ЛС | профиль | цитата
SolMayers, Вот стандартная схема подключения к MySQL которую я использую много лет.
code_35985.txt
Все запросы выполняются аналогично MySQL Workbench.

Я не знаю способа как получить конкретное описания ошибки в Hiasm, да и не было необходимости.
Обычно отлаживаешь запрос в MySQL Workbench а потом применяешь его уже в программе.

Tad, конечно прав. В таблицы обязательно надо делать столбец integer и auto_increment.

Коды ошибок смог найти только от ODBC, думаю они похожи.

 Возвращаемое значение     Описание ошибки 
1000 Не удалось создать среду ODBC
1001 Не удалось указать версию ODBC 3.0
1002 Не удалось создать соединение
1003 Не удалось соединиться с БД
1004 Не удалось создать запрос
1005 Не удалось выполнить запрос
1006 Не удалось получить поле
1007 Ошибка получения следующего набора данных
1008 Не удалось подготовить запрос
1009 Не удалось выполнить связывание
1010 Не удалось получить RowCount
1011 Не удалось получить список
1012 Не задано имя источника данных
1013 Не задано имя файла Базы Данных
1014 Не удалось загрузить ODBCCP32.DLL
1015 Не удалось получить адрес функции SQLConfigDataSource
1016 Ошибка при создании DSN
1017 Не удалось загрузить набор данных
1018 Запрос вернул пустой набор данных

Попробуй запрос написать так
INSERT ignore INTO tel (idtel,tarif,comment) VALUES ('a','b','c')

карма: 0

1
файлы: 1code_35985.txt [2KB] [1111]
Голосовали:SolMayers
Ответов: 5
Рейтинг: 1
#7: 2015-07-17 07:05:23 ЛС | профиль | цитата
Chipset, спасибо за схему и ошибки ODBC.
Да MySQL Workbench очень помогает.


Tad,Chipset писал(а):
В таблицы обязательно надо делать столбец integer и auto_increment.

Попробовал:


теже самые ошибки!



Chipset писал(а):

Попробуй запрос написать так
INSERT ignore INTO tel (idtel,tarif,comment) VALUES ('a','b','c')

Попробовал, ошибки игнорятся!



Для INSERT попробовал использовать компонент dbMySQL_Exec, DSC_Exec(источник данных MySQL) вообще не выдают ошибок (например при совпадении данных). А вот используя DSC_Exec(источник данных ODBC) всё отлично получается!

Но использовать ODBC напряжно, хочется использовать dbMySQL или DS_MySQL а они с ошибками.



Повторюсь с вопросом:
Как можно выйти из положения чтобы ошибок не было, как проверить или проконтролировать что запрос успешно выполнился?

У кого нибудь есть идеи!
карма: 0

0
Ответов: 207
Рейтинг: 14
#8: 2020-02-29 04:00:47 ЛС | профиль | цитата
SolMayers писал(а):
Подключение работает, запрос SELECT работает, а вот например запрос INSERT выдаёт всегда ошибку номер 4 хотя запись в БД появляется!

SolMayers писал(а):
Повторюсь с вопросом:
Как можно выйти из положения чтобы ошибок не было, как проверить или проконтролировать что запрос успешно выполнился?


Прошло 5 лет, может есть решение?
карма: 2

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)