Назад | Перейти на главную страницу

Почему я получаю синтаксическую ошибку при использовании Informix dbaccess?

Я получаю эту синтаксическую ошибку в IBM Informix с помощью утилиты dbaccess:

root@guava:/opt/informix# bin/dbaccess - -
Your evaluation license will expire on 2015-12-22 00:00:00
> show databases;

  201: A syntax error has occurred.
Error in line 1
Near character position 1

Какие-либо предложения?

Вы получаете "синтаксическую ошибку", потому что SHOW DATABASES не является допустимой командой в DB-Access. По факту, SHOW не является допустимым ключевым словом ни в DB-Access, ни в базовой СУБД.

Если что-то и будет работать, это будет INFO DATABASES; однако на самом деле это не поддерживается в DB-Access (но в моем SQLCMD программу, которую я использую вместо DB-Access и использую с тех пор, как впервые написал ее в 1987 году).

Есть другие INFO команды для вывода списка таблиц, столбцов и т. д.

INFO TABLES;                 -- List of user-defined tables and views
INFO COLUMNS FOR systables;  -- Columns for a specific table
INFO INDEXES FOR systables;  -- Indexes on a specific table

Эти команды интерпретируются DB-Access, а не сервером базы данных Informix, и преобразуются в запросы к системному каталогу текущей базы данных. Таким образом, список баз данных несколько отличается, поскольку информация не является частью системного каталога текущей базы данных.

Список баз данных доступен в таблице в sysmaster база данных:

SELECT * FROM SysMaster:informix.sysdatabases;

Пример вывода одного сервера Informix:

…

name            mode_ansi
partnum         1048920
owner           jleffler
created         2014-04-30
is_logging      1
is_buff_log     0
is_ansi         1
is_nls          0
is_case_insens  0
flags           -12283

name            utf8
partnum         1048988
owner           jleffler
created         2014-04-30
is_logging      1
is_buff_log     1
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12285

…

В качестве альтернативы, если вы запустите DB-Access в режиме curses (либо dbaccess или dbaccess dbname), то есть пункт меню Databases что приводит к подменю, которое позволяет вам перечислять, выбирать, создавать и удалять базы данных.