Почему я получаю синтаксическую ошибку при использовании 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
Какие-либо предложения?
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
что приводит к подменю, которое позволяет вам перечислять, выбирать, создавать и удалять базы данных.