Что такое код odbc_error


Odbc, error IM002

Через sqlConnection все получается (база разумеется другая — на моей машине, MSSQL):
Работа с подключенным уровнем ADO .NET в C#

Но есть удаленная MySQL. Решил пробовать через ODBC, что бы подключаться к обеим базам, меняя только строку подключения.
Во время MyConnection.Open(); эта ошибка и вылезает.

В источниках данных создал некий источник с именем Name, вбил все данные для удаленного MySQL и нажав на кнопочку Test получил уведомление, что соединение успешно (да и базы данных из раскрывающегося меню подтягиваются сами).

При этом, такой код вполне работает:

Тут я подключаюсь к своей MSSQL базе. Правда почему-то ругается на пару логин/пароль (не знаю почему, пока ищу ответ), но по крайней мере он видит базу данных.

Добавлено через 38 минут
Небольшая наводка из наблюдений и догадок.
У меня есть сторонняя программа, которая так же использует ODBC соединение. При вводе данных сервера она выдает туже ошибку, что у меня. Но у нее имеется возможность коннектиться через DSN. И вот если я пропишу упомянутый выше источник данных «Name» с теми же самыми данными сервера (а как я писал, кнопка Test — выдает Successfus), то эта программа нормально соединяет.

Пойду пока читать, что такое DSN и как его можно использовать в C#.

Добавлено через 3 часа 35 минут

Разобрался. Для таких же как я еще раз по полочкам:

Хотим создать подключение к MSSQL и MySQL через ODBC.
//MSSQL

string MyConString — строка подключения
DRIVER — название используемого драйвера для общения с MSSQL/MySQL (ниже подробнее)
SERVER — имя сервера MSSQL/MySQL или его IP-адрес (242.54.12.52).
DATABASE — имя базы данных
UID — имя пользователя для входа на сервер MSSQL/MySQL
PASSWORD — пароль для входа на сервер MSSQL/MySQL
OPTION — без понятия. Вроде и без нее работает.

Если строчка MyConnection.Open(); не выдала ошибку, то все в порядке, мы имеем доступ к базе данных.

DRIVER
http://dev.mysql.com/downloads/connector/odbc/
По ссылке выше можно скачать драйвера для операционных систем 32-bit и 64-bit. Не для нашей операционной системы, а для системы, где находится сервер к которому мы подключаемся.
Качаем, устанавливаем. Шаги по установке и эксплуатации тут:
http://dev.mysql.com/doc/connector-odbc/en/index.html
Послу установки по-умолчанию ничего дополнительно настраивать не нужно.

После установки приведенный выше код уже должен работать.
Проверить драйвера на Windows 7, можно запустив
c:\Windows\System32\odbcad32.exe — для 32-битных систем
c:\Windows\SysWOW64\odbcad32.exe — для 64-битных систем
и открыв вкладку «Драйвера».

У меня например была ошибка IM0002 (источник Данных не найден и не указан драйвер по умолчанию).
По странной причине драйвера у меня слетели, но отображались созданные по ним «Пользовательские DSN» (все там же в odbcad32.exe).
Попытки «Настроить» или «Удалить» эти DSN система блокировала ссылаясь на то, что «такой драйвер не доступен». Решил это тем, что поставил поверх старых, новые драйвера и добавил «Пользовательские DSN» с тем же именем, заменив старые.

После этого появилась ошибка IM014 (В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу)
У меня стоит Wimdows 7 64-bit. Запустив c:\Windows\SysWOW64\odbcad32.exe, я разумеется нашел там установленные новенькие драйвера для 64-битной системы. Ошибка же появлялась из-за того, что сервер, к которому я обращался стоит на ОС 32-bit.
Соответственно тут:
c:\Windows\System32\odbcad32.exe
этих драйверов не было. Поставил для 32-bit — заработало.

Код ошибки нарушения основного ключа с использованием ODBC с MS Access

Я использую Java с Microsoft Access через драйвер ODBC. Когда я вставляю повторяющуюся запись для первичного ключа, это дает мне ошибку: java.sql.SQLException: General error . Я хочу показать пользователю, что эта запись уже существует, но я думаю, что это исключение может быть вызвано ODBC и в некоторых других случаях. Поэтому я обнаружил, что есть коды ошибок против каждого сообщения (ref), но я не нашел кода ошибки для нарушения первичного ключа. Может ли кто-нибудь сказать мне, какой код ошибки предназначен для нарушения первичного ключа для ODBC с MS Access?

Вот базовый код

Эти txtName и т.д. Являются JTextFields . Вот полная трассировка стека

Проблема заключается в этой строке st.executeQuery(qry);

Метод executeQuery(query) используется в основном для оператора SELECT и возвращает его в виде объекта ResultSet.

Отметим, что оператор — инструкция INSERT, вы должны использовать executeUpdate(query) , этот метод обычно используется операторами INSERT, UPDATE и DELETE. Когда таблица обновляется успешно, она возвращает 1. Например

ОБНОВИТЬ:

Из-за комментариев я обнаружил, что у вас есть другая проблема, а не оператор SQL. Вы должны остерегаться при использовании java для Ms Access, вы фактически подключаетесь к серверу промежуточного уровня, так что вы должны ожидать непредвиденные исключения при выполнении инструкции SQL, например:

CRATE TABLE FOO (ID varchar (50) NOT NULL, NAME varchar (255) DEFAULT NULL)

Этот запрос выполняется на SQLite и MySQL (возможно, SQL Server тоже, поскольку я его не тестировал), дает ошибку Syntex при доступе, поскольку DEFAULT NULL следует удалить для запуска инструкции. Возможно, есть много другой проблемы, которую вы должны подготовить обращаясь к нему с помощью файла базы данных Access.

Итак, я говорю вам, чтобы оставить его, MS Access подходит для своих пользователей, а не для нас как программиста, мы должны найти наилучший общий способ, потому что мы должны учитывать, что некоторые пользователи используют это приложение, которое ничего не знает ни о языке программирования или базе данных.

Тогда что мне делать?

Я не эксперт в базе данных, но советую:

  • Если вашему приложению необходимо разделить свою базу данных: MySQL, Oracle и SQL Server, используемые для этой цели.
  • Если ваше приложение используется только для некоторых целей и не нужно передавать свои записи другим пользователям, используйте фактически безсерверный механизм базы данных, такой как SQLite. Это, по-видимому, лучший вариант для вас, поскольку для него такой файл, как Access, нужен только внешний драйвер для Java, см. Это.

Я думаю, что есть расширение FireFox для разработки базы данных SQLite, если вы ищете в Google, возможно, вы ее найдете.

ODBC ошибка SQLSTATE=3700 Код ошибки=-3502

Внимание

Здравствуйте!
Конструктор торговых роботов 3CBot http://www.saturn-capital.info/#!blank/zpgpl
работает через БД Ms Access и изначально устанавливается вместе с БД в каталог «C:\Program Files (x86)\3CBot\»
в odbcad32 инсталлятор прописывает путь к БД.
Сам робот и конструктор базу данных видят прекрасно,
но Quik не может обновлять данные в БД, которая лежит в «C:\Program Files (x86)\3CBot\»
Выдает ошибку
[Microsoft][Драйвер ODBC Microsoft Sccess] Ошибка синтаксиса INS ERT IN TO. SQLSTATE=3700 Код ошибки=-3502

Илон Маск рекомендует:  Что такое код header

Проблема решается, если БД расположить не в C:\Program Files (x86)\, а в другом каталоге, например C:\SC\
Сейчас используем C:\SC\ и данной проблемы не наблюдаем.

Есть ли настройки в Quik, которые позволяют сделать подключение к БД не по пути до БД, а по названию ее алиаса, который прописан в odbcad32?

Что такое код odbc_error

Для организации туннеля пользуюсь PuTTY Release 0.62 (см. скрин ABOUT)
На скриншотах приведены все параметры которые выставляю в PuTTY

На скрине STEP_1 настройки в разделе Session
На скрине STEP_2 настройки в разделе Tunnels
На скрине STEP_3 и STEP_4 окно PuTTY до и после авторизации
На скрине STEP_5_ERROR получаемая ошибка при подключении ODBC драйвера

Ошибка появляется и при заполненных параметрах в разделе Tunnels и при пустых параметрах в разделе Tunnels

Что интересно, подключение ук базе через Navicat работает.

Большая просьба подсказать, в чем проблема? где еще смотреть?

odbc_error

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

odbc_error — Get the last error code

Описание

Returns a six-digit ODBC state, or an empty string if there has been no errors.

Список параметров

Идентификатор соединения ODBC, за подробностями обращайтесь к odbc_connect() .

Возвращаемые значения

If connection_id is specified, the last state of that connection is returned, else the last state of any connection is returned.

This function returns meaningful value only if last odbc query failed (i.e. odbc_exec() returned FALSE ).

Смотрите также

  • odbc_errormsg() — Get the last error message
  • odbc_exec() — Prepare and execute an SQL statement

User Contributed Notes 4 notes

If you use an argument, make sure its the CONNECTION_ID and not the RESULT_ID.

Testing the result can return a null string or sometimes a garbage string.

# — Example code —
$rs = odbc_exec($dbc, $sql);

#this is wrong but won’t error out until
#you demo the page for a client!
if (odbc_error($rs)) die(. );

#these work
if (odbc_error()) die(. );
if (odbc_error($dbc)) die(. );

Код ошибки нарушения основного ключа с использованием ODBC с MS Access

Я использую Java с Microsoft Access через драйвер ODBC. Когда я вставляю повторяющуюся запись для первичного ключа, это дает мне ошибку: java.sql.SQLException: General error . Я хочу показать пользователю, что эта запись уже существует, но я думаю, что это исключение может быть вызвано ODBC и в некоторых других случаях. Поэтому я обнаружил, что есть коды ошибок против каждого сообщения (ref), но я не нашел код ошибки для нарушения первичного ключа. Может ли кто-нибудь сказать мне, какой код ошибки предназначен для нарушения первичного ключа для ODBC с MS Access?

Вот базовый код

Эти txtName и так далее JTextFields . Вот полная трассировка стека

Создан 08 июл. 13 2013-07-08 10:47:09 a question

Не могли бы вы добавить свой код, пожалуйста. – Azad 08 июл. 13 2013-07-08 10:55:13

‘Azad’ Я добавил код. – a question 08 июл. 13 2013-07-08 14:18:43

См. Ответ, надеюсь, он поможет – Azad 08 июл. 13 2013-07-08 18:43:08

1 ответ

Проблема в этой строке st.executeQuery(qry);

executeQuery(query) метод используются в основном для ЗЕЬЕСТА и возвращает в виде объекта ResultSet.

С помощью этого оператора инструкция INSERT вы должны использовать executeUpdate(query) , этот метод обычно используется операторами INSERT, UPDATE и DELETE. Когда таблица обновляется успешно, то она возвращает 1. Например

UPDATE:

Благодаря комментариям, я fegured из вас есть еще одна проблема, а не оператор SQL. Вы должны остерегаться при использовании Java для MS Access, вы на самом деле подключения к серверу промежуточного слоя, так что вы должны ожидать, что ип ожидалось исключение (ы) во время выполнения оператора SQL , например:

CRATE TABLE FOO (ID varchar (50) NOT NULL , NAME varchar (255) DEFAULT NULL)

Этот запрос работает на SQLite и MySQL (возможно SQL Server тоже, как я не проверял), дает Синтекс ошибку на Доступ как DEFAULT NULL должны быть удалены для запуска statement.A-й может быть, есть многие другие проблемы, с которыми вы должны столкнуться, с файлом базы данных Access.

Итак, я говорю вам, чтобы оставить его, MS Access подходит для его пользователей, а не для нас, как программиста, мы должны найти наилучший общий способ, потому что мы должны учитывать, что некоторые пользователи используют это приложение, t ничего не знаю ни о Язык программирования и база данных.

Затем, что мне делать?

Я не являюсь экспертом в базе данных, но мой совет:

  • Если приложению нужно разделить свою базу данных: MySQL, Oracle и SQL Server, используемый для этой цели.
  • Если ваше приложение используется только для некоторых целей и не нужно делиться своими записями с другими пользователями, используйте фактически безсерверный механизм базы данных, такой как SQLite.Это, по-видимому, лучший вариант для вас, так как это такой файл, как Access, нужен только внешний драйвер для Java, см. this.

Я думаю, что существует расширение FireFox для разработки базы данных SQLite, если вы ищете в Google, возможно, вы его найдете.

Создан 08 июл. 13 2013-07-08 18:22:52 Azad

Это не решило проблему. Тем не менее такая же ошибка возникает, когда я даю дублирующее значение ключа. Моя проблема заключается в том, чтобы узнать, что такое код ошибки для ODBC MS Access, когда он получил запрос с нарушением PK. Спасибо, что упомянул «наконец», но я уже использую это, но я не писал здесь для простоты кода. Я вставляю полную трассировку стека. Может быть, это полезно. – a question 09 июл. 13 2013-07-09 12:18:55

Является ли ‘st.executeUpdate (qry)’ возвращает значение, отличное от 1, если оно обнаруживает нарушение PK? Но я отлаживал код, который он перескакивает в блок catch ‘SQLException, когда он достигает инструкции’ st.executeUpdate (qry); ‘. Означает, что это утверждение выбрасывает исключение. Я вставил трассировку стека, используя ‘st.executeUpdate (qry)’ – a question 09 июл. 13 2013-07-09 12:25:40

Да, я был смущен, потому что вы не упомянули, что ваш код был для демонстрации, поэтому я его исправил. – Azad 09 июл. 13 2013-07-09 13:07:25

О ‘общей ошибке’, трудно сказать, что вызывает эту проблему, возможно, какое-то исключение java, которое связано и отображается как общая ошибка, или, может быть, подходящая ошибка. Существует много причин, вызывающих эту ошибку, иногда тип данных, в вашем случае, первичный ключ дублирования, поэтому трудно сказать. – Azad 09 июл. 13 2013-07-09 13:11:03

Тогда как я могу узнать, что есть нарушение первичного ключа? Любой подход. – a question 11 июл. 13 2013-07-11 10:54:16

Да, оставьте MS-Acees, если ваше приложение велико, используйте MySQL, в противном случае используйте базу данных SQLite. См. Ответ [** этот вопрос **] (http://stackoverflow.com/questions/15232755/how-to-connect-with-mysql-database-file-sql-using-directory-path-like-ms -acc) для более подробной информации. – Azad 11 июл. 13 2013-07-11 13:21:08

Илон Маск рекомендует:  Что такое код floor

+1 Да, я тоже думаю, что MS Access настолько глуп. Спасибо за Sqlite. Я создаю небольшое автономное приложение, это правильный подход к использованию sqlite, я использовал Access из-за его файловых функций и не нуждался в резервном копировании с ОС-диска? Являются ли sqlite одинаковыми функциями? – a question 12 июл. 13 2013-07-12 03:54:03

@aquestion: см. Обновленный ответ. – Azad 12 июл. 13 2013-07-12 08:35:46

Отлично! Да база данных не используется ни одной из них. Вы правы, проблема с ‘ODBC’, hhh, в то же время я обнаружил, что выполнение одного и того же запроса внутри Access дает правильную ошибку, но не использует ODBC, спасибо любым способом. Я хочу, чтобы никогда не требовалось резервное копирование, даже сбой ОС, поскольку я поместил файл доступа в диск D: (любой, кроме ОС). Могу ли я сделать то же самое с sqlite? Я искал, но не получил соответствующего ответа. – a question 12 июл. 13 2013-07-12 13:54:07

@aquestion: Что нужно сохранить файл ‘.sqlite’ на диск ** D: **? Да, ты можешь. И о том, как это сделать, вы можете задать другой вопрос, потому что, возможно, он будет полезен и для кого-то другого. – Azad 12 июл. 13 2013-07-12 14:01:38

@ Азад: очень полезно, я сделал проект с вашего ответа – a question 19 мар. 14 2014-03-19 14:27:41

@aquestion: С удовольствием узнаем, что :)Azad 19 мар. 14 2014-03-19 15:13:04

Код ошибки нарушения основного ключа с использованием ODBC с MS Access

Я использую Java с Microsoft Access через драйвер ODBC. Когда я вставляю повторяющуюся запись для первичного ключа, это дает мне ошибку: java.sql.SQLException: General error . Я хочу показать пользователю, что эта запись уже существует, но я думаю, что это исключение может быть вызвано ODBC и в некоторых других случаях. Поэтому я обнаружил, что есть коды ошибок против каждого сообщения (ref), но я не нашел код ошибки для нарушения первичного ключа. Может ли кто-нибудь сказать мне, какой код ошибки предназначен для нарушения первичного ключа для ODBC с MS Access?

Вот базовый код

Эти txtName и так далее JTextFields . Вот полная трассировка стека

Создан 08 июл. 13 2013-07-08 10:47:09 a question

Не могли бы вы добавить свой код, пожалуйста. – Azad 08 июл. 13 2013-07-08 10:55:13

‘Azad’ Я добавил код. – a question 08 июл. 13 2013-07-08 14:18:43

См. Ответ, надеюсь, он поможет – Azad 08 июл. 13 2013-07-08 18:43:08

1 ответ

Проблема в этой строке st.executeQuery(qry);

executeQuery(query) метод используются в основном для ЗЕЬЕСТА и возвращает в виде объекта ResultSet.

С помощью этого оператора инструкция INSERT вы должны использовать executeUpdate(query) , этот метод обычно используется операторами INSERT, UPDATE и DELETE. Когда таблица обновляется успешно, то она возвращает 1. Например

UPDATE:

Благодаря комментариям, я fegured из вас есть еще одна проблема, а не оператор SQL. Вы должны остерегаться при использовании Java для MS Access, вы на самом деле подключения к серверу промежуточного слоя, так что вы должны ожидать, что ип ожидалось исключение (ы) во время выполнения оператора SQL , например:

CRATE TABLE FOO (ID varchar (50) NOT NULL , NAME varchar (255) DEFAULT NULL)

Этот запрос работает на SQLite и MySQL (возможно SQL Server тоже, как я не проверял), дает Синтекс ошибку на Доступ как DEFAULT NULL должны быть удалены для запуска statement.A-й может быть, есть многие другие проблемы, с которыми вы должны столкнуться, с файлом базы данных Access.

Итак, я говорю вам, чтобы оставить его, MS Access подходит для его пользователей, а не для нас, как программиста, мы должны найти наилучший общий способ, потому что мы должны учитывать, что некоторые пользователи используют это приложение, t ничего не знаю ни о Язык программирования и база данных.

Затем, что мне делать?

Я не являюсь экспертом в базе данных, но мой совет:

  • Если приложению нужно разделить свою базу данных: MySQL, Oracle и SQL Server, используемый для этой цели.
  • Если ваше приложение используется только для некоторых целей и не нужно делиться своими записями с другими пользователями, используйте фактически безсерверный механизм базы данных, такой как SQLite.Это, по-видимому, лучший вариант для вас, так как это такой файл, как Access, нужен только внешний драйвер для Java, см. this.

Я думаю, что существует расширение FireFox для разработки базы данных SQLite, если вы ищете в Google, возможно, вы его найдете.

Создан 08 июл. 13 2013-07-08 18:22:52 Azad

Это не решило проблему. Тем не менее такая же ошибка возникает, когда я даю дублирующее значение ключа. Моя проблема заключается в том, чтобы узнать, что такое код ошибки для ODBC MS Access, когда он получил запрос с нарушением PK. Спасибо, что упомянул «наконец», но я уже использую это, но я не писал здесь для простоты кода. Я вставляю полную трассировку стека. Может быть, это полезно. – a question 09 июл. 13 2013-07-09 12:18:55

Является ли ‘st.executeUpdate (qry)’ возвращает значение, отличное от 1, если оно обнаруживает нарушение PK? Но я отлаживал код, который он перескакивает в блок catch ‘SQLException, когда он достигает инструкции’ st.executeUpdate (qry); ‘. Означает, что это утверждение выбрасывает исключение. Я вставил трассировку стека, используя ‘st.executeUpdate (qry)’ – a question 09 июл. 13 2013-07-09 12:25:40

Да, я был смущен, потому что вы не упомянули, что ваш код был для демонстрации, поэтому я его исправил. – Azad 09 июл. 13 2013-07-09 13:07:25

О ‘общей ошибке’, трудно сказать, что вызывает эту проблему, возможно, какое-то исключение java, которое связано и отображается как общая ошибка, или, может быть, подходящая ошибка. Существует много причин, вызывающих эту ошибку, иногда тип данных, в вашем случае, первичный ключ дублирования, поэтому трудно сказать. – Azad 09 июл. 13 2013-07-09 13:11:03

Тогда как я могу узнать, что есть нарушение первичного ключа? Любой подход. – a question 11 июл. 13 2013-07-11 10:54:16

Да, оставьте MS-Acees, если ваше приложение велико, используйте MySQL, в противном случае используйте базу данных SQLite. См. Ответ [** этот вопрос **] (http://stackoverflow.com/questions/15232755/how-to-connect-with-mysql-database-file-sql-using-directory-path-like-ms -acc) для более подробной информации. – Azad 11 июл. 13 2013-07-11 13:21:08

+1 Да, я тоже думаю, что MS Access настолько глуп. Спасибо за Sqlite. Я создаю небольшое автономное приложение, это правильный подход к использованию sqlite, я использовал Access из-за его файловых функций и не нуждался в резервном копировании с ОС-диска? Являются ли sqlite одинаковыми функциями? – a question 12 июл. 13 2013-07-12 03:54:03

@aquestion: см. Обновленный ответ. – Azad 12 июл. 13 2013-07-12 08:35:46

Отлично! Да база данных не используется ни одной из них. Вы правы, проблема с ‘ODBC’, hhh, в то же время я обнаружил, что выполнение одного и того же запроса внутри Access дает правильную ошибку, но не использует ODBC, спасибо любым способом. Я хочу, чтобы никогда не требовалось резервное копирование, даже сбой ОС, поскольку я поместил файл доступа в диск D: (любой, кроме ОС). Могу ли я сделать то же самое с sqlite? Я искал, но не получил соответствующего ответа. – a question 12 июл. 13 2013-07-12 13:54:07

Илон Маск рекомендует:  Примеры манипулирования окнами

@aquestion: Что нужно сохранить файл ‘.sqlite’ на диск ** D: **? Да, ты можешь. И о том, как это сделать, вы можете задать другой вопрос, потому что, возможно, он будет полезен и для кого-то другого. – Azad 12 июл. 13 2013-07-12 14:01:38

@ Азад: очень полезно, я сделал проект с вашего ответа – a question 19 мар. 14 2014-03-19 14:27:41

@aquestion: С удовольствием узнаем, что :)Azad 19 мар. 14 2014-03-19 15:13:04

Первичный код ошибки ключа нарушения с помощью ODBC с MS Access

Я использую Java с Microsoft Access через драйвер ODBC. Когда я вставить дубликат записи для первичного ключа он дает мне ошибку: java.sql.SQLException: General error . Я хочу , чтобы показать сообщение пользователя , который уже существует эта запись, но я думаю , что это исключение может быть брошенной ODBC в некоторых других случаях также. Таким образом , я обнаружил , что есть коды ошибок против каждого сообщения ( реф ), но я не нашел код ошибки для первичного ключа нарушения. Может кто — нибудь сказать мне , что код ошибки для первичного ключа нарушения для ODBC с MS Access?

Вот основной код

Они txtName и так далее JTextFields . Вот полный стек трассировки

Проблема в этой строке st.executeQuery(qry);

executeQuery(query) Метод используется в основном для ЗЕЬЕСТА и возвращает в виде объекта ResultSet.

Sence заявления является INSERT IGNORE заявления вы должны использовать executeUpdate(query) этот метод , как правило , используется INSERT IGNORE, UPDATE и DELETE заявления. Когда таблица обновляется успешно , то она возвращает 1. Например

ОБНОВИТЬ:

Благодаря комментариям, я fegured из вас есть еще одна проблема , а не оператор SQL. Вы должны остерегаться при использовании Java для MS Access , вы на самом деле подключения к серверу промежуточного слоя, так что вы должны ожидать , что ип ожидалось исключение (ы) при выполнении SQL заявления, например:

КЛЕТЬ ТАБЛИЦА Foo (ID VARCHAR (50) NOT NULL, Name VARCHAR (255) По умолчанию значение NULL)

Этот запрос работает на SQLite и MySQL (возможно SQL Server тоже , как я не проверял), дает ошибку Синтекс на доступ , так как DEFAULT NULL необходимо удалить для запуска statement.A — й , может быть , есть много других проблем , необходимо подготовить перед ней с файлом Access «базы данных».

Итак, я говорю вам , чтобы оставить его, MS Access подходит для пользователей, а не для нас , как программист, мы должны найти общий лучший путь , потому что мы должны учитывать , что какой — либо пользователь использует это приложение, не знает ничего ни о языке программирования , ни базы данных .

Затем, что я должен делать?

Я не являюсь экспертом в базе данных, но мой совет:

  • Если ваше приложение необходимо разделить свою базу данных: MySQL, Oracle и SQL Server используется для этой цели.
  • Если приложение используются только для некоторых целей и не должно разделять свои записи других пользователей, использовать фактически бессерверную движок базы данных , такие как SQLite . Это , кажется, лучший вариант для вас , как это файл , как Access, требуется только внешний драйвер для Java см это .

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

Ошибка ODBC

Итак при запуске с Сервера или ремот Админа программа рабоает, на клиенте выдаёт след ошибку, кто сталкивался помогите


указанная база данных не найдена [Sybase][ODBC Driver]Unable to connect to database server: specified database not found

Цитата
usb777 пишет:

Итак при запуске с Сервера или ремот Админа программа рабоает, на клиенте выдаёт след ошибку, кто сталкивался помогите


указанная база данных не найдена [Sybase][ODBC Driver]Unable to connect to database server: specified database not found

Интерфейс ODBC был разработан фирмой MicroSoft в качестве унифицированного средства для доступа к реляционным базам данных, управляемых различными СУБД. Для пользователей он представляется в виде совокупности функций и источников данных. Под источниками данных здесь подразумеваются объекты являющиеся связующим звеном между базами данных и их приложениями. Источники данных осуществляют взаимодействие с базами данных через ODBC-драйверы. Такие драйверы поставляются фирмами-разработчиками СУБД. Создание и настройка источников осуществляется пользователями, а интерфейсные функции предоставляет фирма MicroSoft. После настройки источника данных, его имя используется в приложениях в качестве псевдонима для обращения к соответствующей базе данных

Посмотри что у тебя стоит на сервере в Источники данных (ODBC) -> Пользовательский DSN

Что такое код odbc_error

Модератор: april22

Запрос к внешней БД через func_odbc

murr » 02 апр 2014, 17:57

Asterisk 10.12.4
FreePBX 2.11

Задача — определить маршрут входящих для сотрудников и остальных. База данных с телефонами сотрудников — в 1С под MS SQL 2000.

Настроил odbcinst.ini
Код: выделить все [FreeTDS]
Description = ODBC for Microsoft SQL
Driver = /usr/lib/libtdsodbc.so.0
UsageCount = 1
Threading = 2

Настроил odbc.ini
Код: выделить все [1cDB]
Description = MS SQL connection to ‘1C DB’ database
Driver = FreeTDS
Database = NN_3
Server = 10.10.1.4
UserName = sa
Password = хххххх_admin
Trace = No
#TDS_Version = 7.0
Port = 1433

Настроил func_odbc.conf
Код: выделить все [CHECK_NUM]
prefix = 1C
dsn=1cDB
readsql=select count(*) from SC17120 where LEFT(LTRIM(SP17131),3)=’1KZ’ AND descr like ‘%$

Завел доп. направление FreePbx
Код: выделить все [check-worker-numbers]
exten => s,1,NoOp(Проверка на принадлежность к сотрудникам)
exten => s,n,Set(telnum=$)
exten => s,n,Set(ret_func=$<1C_CHECK_NUM($)>)
exten => s,n,GotoIf($[ $ = «1»] ]?rab:net)
exten => s,n(rab),NoOp($ — это номер сотрудника)
exten => s,n,Hangup()
;exten => s,n,Goto(ext-group,600,1)
exten => s,n(net),NoOp($ — это НЕ номер сотрудника)
exten => s,n,Hangup()
;exten => s,n,Goto(ext-group,601,1)
;exten => s,n,Hangup()

В итоге в логах (телефон клиента)
Код: выделить все VERBOSE[18807] pbx.c: — Executing [3005@from-trunk:13] Goto(«SIP/3005-0000001f», «check-worker-numbers,s,1») in new stack
VERBOSE[18807] pbx.c: — Goto (check-worker-numbers,s,1)
VERBOSE[18807] pbx.c: — Executing [s@check-worker-numbers:1] NoOp(«SIP/3005-0000001f», «Проверка на принадлежность к сотрудникам») in new stack
VERBOSE[18807] pbx.c: — Executing [s@check-worker-numbers:2] Set(«SIP/3005-0000001f», «telnum=380506583493») in new stack
ERROR[18807] func_odbc.c: Unable to execute query [select count(*) from SC17120 where LEFT(LTRIM(SP17131),3)=’1KZ’ AND descr like ‘%380506583493’]
VERBOSE[18807] pbx.c: — Executing [s@check-worker-numbers:3] Set(«SIP/3005-0000001f», «ret_func=») in new stack
WARNING[18807] ast_expr2.fl: ast_yyerror(): syntax error: syntax error, unexpected ‘=’, expecting $end; Input:

Подключение с этим же запросом через isql проходит нормально:
Код: выделить все [root@pbx asterisk]# isql -v 1cDB sa хххххх_admin
+—————————————+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+—————————————+
SQL> select count(*) from SC17120 where LEFT(LTRIM(SP17131),3)=’1KZ’ AND descr like ‘%380506583493’
+————+
| |
+————+
| 0 |
+————+
SQLRowCount returns 1
1 rows fetched
SQL>

Почему пишет ошибку выполнения запроса? Чего не увидел?

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL