Ошибка Установлены недопустимые локали !! при попытке установить sqldemo на Informix

Я новичок в Informix, и у меня возникают проблемы с установкой sqldemo.

Настроено на данный момент:

  • openSuse 12.1 (32 бит)
  • Informix Growth Edition 11.70 UC6
  • Informix SQL Developer 7.50 UC6
  • Informix RDS 7.50 UC6
  • Informix ID 7.50 UC6

После нескольких дней борьбы и большого чтения http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp, мне удалось установить Informix и он-лайн.

Я также решил установить демонстрационный экземпляр базы данных, который идет вместе с установкой.

Я сейчас пытаюсь начать работу с Informix 4GL на примерах.

Я пытаюсь поднять базу данных sqldemo. Я не знаю, заменит ли он предыдущий экземпляр, установленный с Informix, но это уже другая проблема.

Прямо сейчас, согласно документу, запуск следующей должен настроить БД:

sqldemo stores2t -log

Однако я получаю сообщение об ошибке: «Установлены недопустимые языковые стандарты !!».

Я попытался найти эту ошибку, а также в документации.

Я попытался установить CLIENT_LOCALE и DB_LOCALE в моем файле .profile.

Например:

  • export CLIENT_LOCALE=en_US.CP1252 и
  • export DB_LOCALE=en_US.819

Это не помогло.

Толчок в правильном направлении или, возможно, какая-то другая документация, которую я смог бы прочитать, которая объясняла бы вещи лучше, будет действительно оценена.

Если от меня требуется какая-либо другая информация, не стесняйтесь спрашивать.

Обновление 1

Большое спасибо за ответ.

Во-первых, я попробовал пару вещей после вашего поста.

  1. Изменил CLIENT_LOCALE и DB_LOCALE, как вы указали - Та же ошибка - поэтому я удалил его, как вы сказали, он не должен быть установлен.
  2. Исправлена ​​проблема в моем PATH и убедитесь, что в нем есть / usr / informix / bin - Та же ошибка
  3. INFORMIXDIR - это / usr / informix
  4. INFORMIXSERVER - это ol_informix1170 (это из базы данных, которая была установлена ​​при установке informix, не знаю, нужно ли это менять? И если да, то на что?)
  5. Выполните упомянутый сценарий, результат: INFORMIXDIR = / usr / informix INFORMIXSERVER = ol_informix1170 INFORMIXSQLHOSTS = / usr / informix / etc / sqlhosts LANG = en_US.UTF-8 ONCONFIG = onconfig

  6. Я заметил, что я установил язык на UK, что сделало Locales en_gb вместо en_us, поэтому попытался изменить это в моем .profile, что не помогло, поэтому также попытался изменить язык на US и locales на en_us, но это сделало нет разницы.

Что касается того, что вы сказали о скрипте sqldemo и уже установленной базе данных, это нормально, если эта база данных будет удалена, поскольку это всего лишь тестовый блок VB, на котором я могу изучить.

Может ли быть проблемой $ INFORMIXSERVER, установленный как ol_informix1170?

Еще раз спасибо за помощь.

Нил

Обновление 2

Еще раз спасибо за ответ.

Несколько замечаний.

  1. Результаты dbenv, которые я опубликовал, - это все, что показывает, что я предполагаю / предполагаю (а-а) означает, что другие переменные среды не установлены. Какие из опубликованных вами переменных среды абсолютно необходимы для его работы?

  2. Как и выше, где мне найти файл terminfo или его нужно создать?

  3. Как и выше, переменная SQLEXEC ... где мне найти sqlrm? Из прочитанных мною документов я кое-что помню, что это должно быть $ INFORMIXDIR / lib? но у меня есть только каталог esql. Это правильно.

  4. Если что-то из первых трех вышеупомянутых не вызывает больше проблем, при попытке вашего предложения DEMOPATH = en_us / 0333 sqldemo store2t -log я получаю следующую ошибку: Извините, я не могу прочитать программу mkstores3, необходимую для создания демонстрационной базы данных. Проверьте подкаталог / etc каталога INFORMIXDIR (/ usr / informix).

Проверка / usr / informix / etc действительно показывает, что файла mkstores3 нет.

  1. Пытаясь продолжить запись isqldemo, я получаю следующую ошибку: / usr / informix / bin / isqldemo: строка 58: / usr / informix / demo / sql / en_us / e01c / isqldemo: нет такого файла или каталога.

Я думаю, это имеет смысл, поскольку нет каталога e01c, только каталог 0333.

Прямо сейчас все, что вы мне скажете, действительно будет утешением, потому что мой новизна в Linux и, в частности, в Informix, является важным фактором. Интересно, что этот баг существует уже давно. Думаю, люди более опытные, чем я, понимали, как решить эту проблему самостоятельно, или просто никогда не беспокоились о sqldemo.

Думаю, это научит меня читать это:

Пример INFORMIX-4GL, версия 4.1, июль 1991 г.

Сейчас собираюсь проверить, существует ли какой-либо обновленный текст, но все равно был бы признателен за дополнительную помощь в решении этой проблемы. Считаете ли вы, что возвращение к предыдущему моментальному снимку до установки Informix и отказ от включения базы данных ol_informix1170 может быть возможным решением? Я бы не особо понял, что это будет, но что я знаю.

Большое спасибо за ваше время и усилия.

С уважением,

Нил

Обновление 3

Итак, я действительно вижу, что документ, который я читал, очень древний. Я нашел обновленный (2002 г.), в котором используется другой сценарий (dbaccessdemo7).

Я пробовал запустить это, но столкнулся с ошибкой, но завтра будет другой день.

А пока я собираюсь отметить это как решенное из-за обнаруженной и устраненной ошибки. Я не собираюсь тратить больше времени и усилий на sqldemo.

Большое вам спасибо, и если я буду бороться с dbaccessdemo 7, я задам новый вопрос.

С уважением,

Нил


person Neill    schedule 23.10.2012    source источник
comment
Благодарим вас за информацию о платформе и версии; это помогает!   -  person Jonathan Leffler    schedule 24.10.2012
comment
Я не думаю, что будет утешением сказать вам, что (а) isqldemo вместо sqldemo, вероятно, сработало бы для вас (это сработало для меня, без использования DB-Load) или (б) что рассматриваемый сценарий был последним изменен в 2001 году (так что ошибка существует без пятен более десяти лет).   -  person Jonathan Leffler    schedule 24.10.2012


Ответы (1)


Сценарий sqldemo не создает новый сервер; он может разрушить вашу существующую базу данных (один сервер может содержать несколько баз данных; действительно, при инициализации сервера создается 4 sys* базы данных), но в противном случае это не повредит вашему серверу.

Возможная причина ошибки

Обычная проблема с недопустимыми языковыми стандартами заключается в том, что вы не установили $INFORMIXDIR. Вам нужно установить $INFORMIXDIR, если /usr/informix не является (символической ссылкой) правильным местоположением. Вам также понадобится $INFORMIXSERVER набор, и вам обычно нужен $INFORMIXDIR/bin на $PATH. Строго говоря, $INFORMIXSERVER - единственная обязательная переменная; на практике вы беспокоитесь и о двух других.

Параметр $INFORMIXDIR используется для определения местоположения информации о языковом стандарте (которая находится в $INFORMIXDIR/gls) и файлов сообщений (которые находятся в $INFORMIXDIR/msg).

Обратите внимание, что CP1252 - это кодовая страница Windows. Обычно в Unix вы либо не устанавливаете CLIENT_LOCALE или DB_LOCALE, либо можете установить их:

export CLIENT_LOCALE=en_us.8859-1
export DB_LOCALE=en_us.8859-1

или вы можете выбрать другой, более подходящий (для вас) регион. Локаль 8859-15 включает, например, символ евро, или локаль utf-8 диктует UTF-8 в базе данных. Но для начальной отладки придерживайтесь языкового стандарта 8859-1, также известного как 819 или 0333 (все на основе IBM CCSID). Если это не работает с 8859-1, то у нас один набор проблем; если он работает с 8859-1, но не работает с каким-либо другим кодовым набором или локалью, то у нас другой набор проблем.


Дополнительная информация, если вышеуказанное решение не сработает

Если проблема не в этом, я попрошу уточнить некоторые подробности - в частности, вашу среду Informix, о которой сообщает dbenv скрипт ниже:

:       "@(#)$Id: dbenv.sh,v 2.11 2007/09/02 00:18:58 jleffler Exp $"
#
#       Printout INFORMIX database environment

informix1="DB[^=]|DELIMIDENT=|SQL|ONCONFIG|TBCONFIG|INFOR"
informix2="ARC_|CLIENT_LOCALE=|GL_|GLS8BITSYS|CC8BITLEVEL|ESQL|FET_BUF_SIZE="
informix3="INF_ROLE_SEP=|NODEFDAC=|ONCONFIG|OPTCOMPIND|PDQ|PSORT"
informix4="PLCONFIG|SERVER_LOCALE|FGL|C4GL|NE_"
informix5="TCL_LIBRARY|TK_LIBRARY"
informix="$informix1|$informix2|$informix3|$informix4|$informix5"
system="COLLCHAR=|LANG=|LC_|LD_LIBRARY_PATH(_64)?=|PATH=|SHLIB_PATH="
jlss="IXD(32|64)?="

env |
egrep "^($informix|$system|$jlss)" |
sort

Это старый сценарий; вот почему отсутствует шебанг.


Второй набор диагнозов

Я надеялся на полный вывод сценария dbenv; удивительно, как часто что-то обнаруживается. Однако, учитывая то, что вы сказали, скорее всего, все будет в порядке.

Настройка INFORMIXSERVER звучит нормально.

Меня поразила установка LANG=en_US.UTF-8; Informix обращает внимание на $LANG и $LC_* переменные (поэтому dbenv их выводит). Это может быть одним из факторов проблемы. Однако я ожидал, что CLIENT_LOCALE и SERVER_LOCALE разберутся с этим, если это была проблема. Кроме того, на моем Mac у меня LANG=en_US.UTF-8, но я могу подключиться к (8859-1) базам данных в порядке.

Это начинает выглядеть как проблема с установкой ... или sqldemo проблема ...

Я перешел с Mac на RHEL 5 (архаичную) машину x86 / 64 и попробовал запустить там sqldemo:

$ dbenv
DBDATE=Y4MD-
DBEDIT=vim
INFORMIXDIR=/work4/informix/tools-7.50.FC4
INFORMIXSERVER=toru_31
INFORMIXSQLHOSTS=/work4/informix/ids-11.70.FC4/etc/sqlhosts
INFORMIXTERM=terminfo
IXD64=/work4/informix/ids-11.70.FC4
IXD=/work4/informix/tools-7.50.FC4
IXH=/work4/informix/ids-11.70.FC4/etc/sqlhosts
IXO=/work4/informix/ids-11.70.FC4/etc/onconfig.toru_31
IXS=toru_31
LANG=en_US.UTF-8
LD_LIBRARY_PATH=/lib64:/usr/lib64:/work4/informix/tools-7.50.FC4/lib:/work4/informix/tools-7.50.FC4/lib/tools:/work4/informix/tools-7.50.FC4/lib/esql:/work4/informix/ids-11.70.FC4/lib:/work4/informix/ids-11.70.FC4/lib/esql:/work4/informix/ids-11.70.FC4/lib/cli
ONCONFIG=onconfig.toru_31
PATH=/work4/informix/tools-7.50.FC4/bin:.:/work4/jleffler/bin:/u/jleffler/bin:/work4/informix/ids-11.70.FC4/bin:/u/jleffler/linux/x86_64/bin:/work4/informix/11.70.FC1:/usr/atria/bin:/work4/jleffler/perl/v5.12.1/bin:/usr/bin:/bin:/usr/X11R6/bin:/atria_release/cm_dist/vobs/imitools/bin:/opt/rational/clearcase/bin:/opt/rational/clearquest/bin
SQLCMDLOG=/work4/jleffler/.sqlcmdlog
SQLEXEC=sqlrm
TERMINFO=/work4/jleffler/terminfo
TERM=xterm-color
$ sqldemo st2 -log
Invalid Locales set !!
$

О, да? Нет; у меня все в порядке, спасибо!

Ну да ладно ... Я могу воспроизвести вашу проблему! Это шаг 1. Шаг 2 - просмотр сценария ругательства удален.

PRODUCT=sql
DEMOFILE=sqldemo
DEFLANG=en_US.8859-1

INFORMIXDIR=${INFORMIXDIR:=/usr/informix}
INFENV=$INFORMIXDIR/bin/infenv
CONVLOC=$INFORMIXDIR/bin/convloc

if [ $# -gt 0 -a "X$1" = "X-e" ] ; then
    LOCALE=$DEFLANG                           # -e means en_US.8859-1 required
    shift
else
    LOCALE=`$INFENV DBLANG`                   # get DBLANG value
    if [ "x${LOCALE}" = "x" ]; then        
    LOCALE=`$INFENV CLIENT_LOCALE`        # try CLIENT_LOCALE instead
    if [ "x${LOCALE}" = "x" ]; then
        LOCALE=`$INFENV DB_LOCALE`        # finally default to DB_LOCALE
    fi
    fi
fi

if [ "x${LOCALE}" = "x" ]; then
    LOCALE=$DEFLANG       # finally default to DB_LOCALE
fi

export LOCALE

if [ "x${DEMOPATH}" = "x" ]; then
    echo "Invalid Locales set !!"
else
    exec $INFORMIXDIR/demo/$PRODUCT/$DEMOPATH/$DEMOFILE $*
fi

exit $?

Обратите внимание, что тест для ${DEMOPATH}; обратите внимание, что DEMOPATH не установлен в скрипте. Итак, мы должны его настроить. Что? Что ж, ls $INFORMIXDIR/demo/sql показывает, что существуют различные подкаталоги, зависящие от локали (en_us, ja_jp, ko_kr, th_th, zh_cn, zh_tw), а в каталоге en_us есть 0333 (только).

Пожалуйста, запустите:

DEMOPATH=en_us/0333 sqldemo stores2t -log

Это более или менее сработало для меня - я считаю, что это сработает для вас. У меня несколько необычная установка: у меня есть только I4GL (p-code и c-code) и ISQL в $ INFORMIXDIR; сервер запущен из другого каталога. Это означает, что у меня нет серверных служебных программ, таких как dbload (конкретно) в $INFORMIXDIR/bin. Поэтому, когда сценарий sqldemo попытался загрузить данные с помощью dbload, у меня ничего не вышло. Это сработает для вас, потому что все программное обеспечение Informix находится в одном каталоге. Чтобы добавить оскорбления к травме, он запускает программу dbload по явному пути, поэтому я не могу изменить свой PATH, чтобы сделать его доступным.

Это должно вас подтолкнуть. Я должен сообщить об ошибке ... это CQ idsdb00244894.

Мне жаль, что вы столкнулись с такими неприятностями. Ты не должен был этого делать.

person Jonathan Leffler    schedule 23.10.2012
comment
У меня всегда было впечатление, что сценарии установки 1170 автоматически определяют все необходимые переменные среды ifx, в зависимости от параметров, которые вы выбираете при установке сервера? - person Frank R.; 27.10.2012
comment
Есть вероятность, что сценарии установки сервера Informix 11.70 работают; это не устанавливается сценарием установки сервера, и DEMOPATH не является стандартной переменной среды Informix. (Я не слышал об этом, пока не столкнулся с его использованием в этом сценарии.) В сценарии isqldemo есть дополнительная строка между export LOCALE и if [ "x${DEMOPATH}" = "x" ]; then; эта строка: DEMOPATH=`$CONVLOC $LOCALE` . Вы можете заметить, что сценарий устанавливает CONVLOC, но никогда не использует его. - person Jonathan Leffler; 27.10.2012
comment
хм, ваше право, i4gl и isql - это инструменты разработчика, которые устанавливают демонстрацию магазинов. Что означает CONVLOC, преобразовать языковой стандарт? - person Frank R.; 30.10.2012
comment
Программа convloc преобразует имя вашей локали, например en_us.8859-1, в имя подкаталога, например en_us/0333. - person Jonathan Leffler; 30.10.2012