Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / SQL1024N A database connection does not exist. SQLSTATE=08003 / 20 сообщений из 20, страница 1 из 1
22.05.2016, 13:09
    #39240875
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Добрый день. Установил сегодня DB2 и пытаюсь выполнить первые базовые команды, чтобы проверить что все работает ок. Однако в итоге получаю сообщения об ошибках. Итак, делаю следующее

1. Запускаю DB2 CLP
2. выполняю команду db2 => LIST DATABASE DIRECTORY и получаю следующий список:

Каталог системных баз данных

Число записей в каталоге = 1

Запись базы данных 1:

Алиас базы данных = SAMPLE
Имя базы данных = SAMPLE
Каталог локальной базы данных = C:
Выпуск базы данных = 10.00
Комментарии =
Тип записи каталога = Косвенный
Номер раздела базы данных каталога = 0
Имя хоста альтернативного сервера =
Номер порта альтернативного сервера =


3. Наконец пытаюсь выполнить команду db2 => set schema sample (как понял это аналог USE db_name в некоторых других СУБД) и получаю следующее:

DB21034E Данная команда обрабатывалась как оператор SQL, поскольку она не
является допустимой командой процессора командной строки. При обработке SQL
было получено сообщение:
SQL1024N Отсутствует соединение с базой данных. SQLSTATE=08003


Подскажите, в чем может быть проблема или что я делаю не так. Цель - просто подключиться к тестовой базе sample, ну и запустить какой-нибудь простецкий запросец, который выведет, например, список таблиц. Спасибо!
...
Рейтинг: 0 / 0
22.05.2016, 15:03
    #39240899
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Jacobian,
между 2. и 3. пропущено 2.5

connect to sample
...
Рейтинг: 0 / 0
22.05.2016, 15:07
    #39240900
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Не знаю, что за USE db_nam, но в DB2 схема - это квалификатор имён внутри базы (например, someschema в SELECT ... FROM someschema.sometable), по умолчанию совпадает с именем пользователя, но можно задать какую-нибудь другую.
...
Рейтинг: 0 / 0
22.05.2016, 15:26
    #39240904
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Все разобрался. Получилось подключиться к DB2 в консоли и позапускать простые запросы. Единственная теперь проблема в том, что аналогичные запросы (даже самые тривиальные) не получается запустить из кода. Так, например, в Питоне получаю следующее:

Код: sql
1.
2.
3.
4.
5.
6.
>>> import ibm_db
>>> conn = ibm_db.connect("sample","root","root")
>>> ibm_db.exec_immediate(conn, "LIST TABLES")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception



Когда же запускаю аналогичный запрос в командной строке, то все ок - выводит кучу существующих таблиц. Не знаю, что не так с кодом и какой дебаг тут может помочь.
...
Рейтинг: 0 / 0
22.05.2016, 15:30
    #39240905
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Причем, если делаю такую проверку:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
if client:
    print("DRIVER_NAME: string(%d) \"%s\"" % (len(client.DRIVER_NAME), client.DRIVER_NAME))
    print("DRIVER_VER: string(%d) \"%s\"" % (len(client.DRIVER_VER), client.DRIVER_VER))
    print("DATA_SOURCE_NAME: string(%d) \"%s\"" % (len(client.DATA_SOURCE_NAME), client.DATA_SOURCE_NAME))
    print("DRIVER_ODBC_VER: string(%d) \"%s\"" % (len(client.DRIVER_ODBC_VER), client.DRIVER_ODBC_VER))
    print("ODBC_VER: string(%d) \"%s\"" % (len(client.ODBC_VER), client.ODBC_VER))
    print("ODBC_SQL_CONFORMANCE: string(%d) \"%s\"" % (len(client.ODBC_SQL_CONFORMANCE), client.ODBC_SQL_CONFORMANCE))
    print("APPL_CODEPAGE: int(%s)" % client.APPL_CODEPAGE)
    print("CONN_CODEPAGE: int(%s)" % client.CONN_CODEPAGE)
    ibm_db.close(conn)
else:
    print("Error.")



То на выходе получаю следующее:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
DRIVER_NAME: string(10) "DB2CLI.DLL"
DRIVER_VER: string(10) "10.05.0007"
DATA_SOURCE_NAME: string(6) "SAMPLE"
DRIVER_ODBC_VER: string(5) "03.51"
ODBC_VER: string(10) "03.01.0000"
ODBC_SQL_CONFORMANCE: string(8) "EXTENDED"
APPL_CODEPAGE: int(1251)
CONN_CODEPAGE: int(1208)
True



То есть на первый взгляд все норм. Однако же запустить даже самый элементарнейший запрос так и не получается. Подскажите, уважаемые форумчане, какой дебаг тут поможет?
...
Рейтинг: 0 / 0
22.05.2016, 15:48
    #39240911
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Jacobian,

Добрый день.

list tables - это не SQL запрос, а команда командного процессора db2 (clp), который может выполнять как эти команды, так и SQL запросы.
http://www.ibm.com/support/knowledgecenter/?lang=en#!/SSEPGG_10.5.0/com.ibm.db2.luw.admin.cmd.doc/com.ibm.db2.luw.admin.cmd.doc-gentopic3.html?cp=SSEPGG_10.5.0/3-6-2-4
Их не надо пытаться выполнять в своей программе там, где ожидается SQL запрос.
...
Рейтинг: 0 / 0
22.05.2016, 15:51
    #39240915
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Спасибо! Но я не только list tables испытывал. Так же пробовал делать простой select * from act. В консоли этот запрос выдает следующий результат:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
db2 => select * from act

ACTNO  ACTKWD ACTDESC
------ ------ --------------------
    10 MANAGE MANAGE/ADVISE
    20 ECOST  ESTIMATE COST
    30 DEFINE DEFINE SPECS
    40 LEADPR LEAD PROGRAM/DESIGN
    50 SPECS  WRITE SPECS
    60 LOGIC  DESCRIBE LOGIC
    70 CODE   CODE PROGRAMS
    80 TEST   TEST PROGRAMS
    90 ADMQS  ADM QUERY SYSTEM
   100 TEACH  TEACH CLASSES
   110 COURSE DEVELOP COURSES
   120 STAFF  PERS AND STAFFING
   130 OPERAT OPER COMPUTER SYS
   140 MAINT  MAINT SOFTWARE SYS
   150 ADMSYS ADM OPERATING SYS
   160 ADMDB  ADM DATA BASES
   170 ADMDC  ADM DATA COMM
   180 DOC    DOCUMENT

  18 записей выбрано.



В коде же имею другую картину:

Код: sql
1.
2.
3.
4.
5.
6.
>>> conn = ibm_db.connect("sample","root","root")
>>> ibm_db.exec_immediate(conn,"select * from act")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception
>>>
...
Рейтинг: 0 / 0
22.05.2016, 17:46
    #39240937
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Jacobian,

Fetching rows or columns from result sets in Python
https://www.ibm.com/support/knowledgecenter/#!/SSEPGG_10.5.0/com.ibm.swg.im.dbclient.python.doc/doc/t0054388.html

Если не получается, покажите код и сообщение об ошибке.
...
Рейтинг: 0 / 0
22.05.2016, 18:08
    #39240942
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Марк,

в моем сообщении код из трех строчек приведен целиком и полностью. До команды fetch дело даже не доходит, потому что все уже рушится на команде exec_immediate.
...
Рейтинг: 0 / 0
22.05.2016, 18:13
    #39240944
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Jacobian,

Я не специалист в Python, но вы все же попробуйте:
stmt = ibm_db.exec_immediate(conn, sql)
Вместо:
ibm_db.exec_immediate(conn, sql)
...
Рейтинг: 0 / 0
22.05.2016, 18:18
    #39240945
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Нет, это не помогло.
...
Рейтинг: 0 / 0
22.05.2016, 21:44
    #39241004
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
JacobianСпасибо! Но я не только list tables испытывал. Так же пробовал делать простой select * from act. В консоли этот запрос выдает следующий результат:

Код: sql
1.
2.
3.
4.
5.
6.
7.
db2 => select * from act

ACTNO  ACTKWD ACTDESC
------ ------ --------------------
    10 MANAGE MANAGE/ADVISE
...
  18 записей выбрано.



В коде же имею другую картину:

Код: sql
1.
2.
3.
4.
5.
6.
>>> conn = ibm_db.connect("sample","root","root")
>>> ibm_db.exec_immediate(conn,"select * from act")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception
>>>



Почему root? Хотя и ставилась она под root'ом, но instance, скорее всего, db2inst1 и база SAMPLE создана под этим юзером, так что искомые объекты в этой схеме. Мне никогда не приходило в голову попробовать коннектиться к DB2 root'ом, но если так можно, я тогда ожидал бы правильным запрос "select * from db2inst1.act".
...
Рейтинг: 0 / 0
22.05.2016, 21:55
    #39241011
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
И не факт, что root вообще имеет право на выборку из тех таблиц. Лучше и приконнектиться как instance owner, который по дефолту db2inst1, если при установке не было задано иначе.
...
Рейтинг: 0 / 0
23.05.2016, 06:50
    #39241083
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Я когда устанавливал BD2, то по умолчанию указал логин и пароль - root/root. И обратите внимание, что Exception вылетает не на строке подключения, а на строке запроса. И кстати если в строке подключения поменять root на дефолтный, то тоже выскочит ошибка.
...
Рейтинг: 0 / 0
23.05.2016, 06:52
    #39241085
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Но конечно есть большая вероятность, что дело именно в этом - в том, что вместо дефолта указал рута. Буду признателен за совет, как и что тут в таком случае можно сделать.
...
Рейтинг: 0 / 0
23.05.2016, 10:19
    #39241191
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Начал подозревать, что дело происходит под виндой.
А-а-а!!! в самом деле, DRIVER_NAME: string(10) "DB2CLI.DLL".
В таком случае, root, скорее всего, не более чем обычный пользователь и его имя не делает разницы...
Плохо без диагностики. В первый раз такое вижу - чтобы по exception ничего полезного не было.
...
Рейтинг: 0 / 0
23.05.2016, 11:26
    #39241264
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Да, все верно - в данном случае работаю под виндой. И такой малоинформативный эксэпшон тоже сильно удивляет. Кстати, если например при подключении передам неправильные параметры, то тоже выскочит такой же простецкий эксеэшон, по которому ничего не поймешь.
...
Рейтинг: 0 / 0
23.05.2016, 15:39
    #39241487
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
...
Рейтинг: 0 / 0
23.05.2016, 18:28
    #39241615
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Благодарю за совет! Очень полезная информация! Сейчас буду делать дебаг.
...
Рейтинг: 0 / 0
23.05.2016, 18:31
    #39241618
Jacobian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL1024N A database connection does not exist. SQLSTATE=08003
Отдебажил. На выходе получил интересное сообщение:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
>>> import ibm_db
>>> conn = ibm_db.connect("sample","root","root")
>>> ibm_db.exec_immediate(conn, "select * from act")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception
>>> print(ibm_db.stmt_errormsg())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc8 in position 38: ordinal not in range(128)



Буду копать дальше.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / SQL1024N A database connection does not exist. SQLSTATE=08003 / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]