Проблема с InterBase 2009
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Проблема с InterBase 2009
Здраствуйте.
Поставил InterBase SMP 2009 9.0.3.437
Запускаю сервер ibserver.exe (через менеджер сервера).
Запускаю свою программу - выдает ошибку "message length error (encountered 287, expected 68)"
Останавливаю сервер.
Запускаю сервер ibserver.exe (WI-V7.0.0.206) в качестве приложения (через менеджер сервера), т.к. как служба он не хочет работать и автоматически стартовать при загрузке с Windows.
Запускаю свою программу - все работает.
Подскажите, что это может быть и как это можно исправить?
Спасибо. С Уважением, Дмитрий.
Поставил InterBase SMP 2009 9.0.3.437
Запускаю сервер ibserver.exe (через менеджер сервера).
Запускаю свою программу - выдает ошибку "message length error (encountered 287, expected 68)"
Останавливаю сервер.
Запускаю сервер ibserver.exe (WI-V7.0.0.206) в качестве приложения (через менеджер сервера), т.к. как служба он не хочет работать и автоматически стартовать при загрузке с Windows.
Запускаю свою программу - все работает.
Подскажите, что это может быть и как это можно исправить?
Спасибо. С Уважением, Дмитрий.
Re: Проблема с InterBase 2009
какая-то у вас обратная ситуация с ошибкой. Чаще люди пишут оператор SQL и "у меня ошибка", не указывая, что за ошибка. У вас наоборот - вы пишете ошибку, но не указываете, на чем именно она происходит. Если бы вы не сказали "свою программу", я бы еще понял.
С другой стороны, если вы используете 7.0 и 2009 над одной базой, значит база в формате 7.0, что не является родным для 2009.
Кстати, прочитайте
www.ibase.ru/devinfo/inst_manual.htm - научитесь устанавливать IB как сервис.
p.s. "менеджер сервера" - это не для вас, если вы программист.
С другой стороны, если вы используете 7.0 и 2009 над одной базой, значит база в формате 7.0, что не является родным для 2009.
Кстати, прочитайте
www.ibase.ru/devinfo/inst_manual.htm - научитесь устанавливать IB как сервис.
p.s. "менеджер сервера" - это не для вас, если вы программист.
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Попробую расписать сложившуюся ситуацию поподробнее.
Аппаратное обеспечение:
CPU: Intel i5 (4 Core)
RAM: 4 Gb DDR3
HDD: 1Tb Hitachi
HDD: 160 Gb Hitachi
Остальное неважно
Установленное программное обеспечение:
Windows 7 Ultimate 64 bit
Embarcadero RAD Studio XE2
Borland InterBase 7.0 (WI-V7.0.0.206)
CodeGear InterBase SMP 2009 (9.0.3.437) - поставил, чтобы посмотреть как эта версия будет работать с многоядерным процессором
Компаненты для доступа к БД стандартные для Студии ХЕ2
Моя программа (МП) - Написаная в Студии ХЕ2 для замера времени выполнения операций при работе с БД.
Файл базы данных INV.GDB создан IBExpert.
(МП) выполняет следующие действия: Генерация данных - заполняет поля таблиц произвольными значениями в количестве указаном в Edit (например 1 000 000 записей), Поиск посредством запроса "select", Подсчет количества записей в таблице, Очистка таблицы.
По поводу того, что ibserver.exe запускается не как сервис не пойму почему. Раньше на ХР и 32 битной 7 инсталятор устанавливал Interbase и он работал как серсис, а здесь на 64 бит не хочет.
Вернемся к нашим овцам - Так вот при работе InterBase 7.0 (МП) запускается и можно выполнить любое из выше описаных действий. Запускаю сервер InterBase SMP 2009 (7.0 соответственно остановлен) (сервер стартует без каких-либо ошибок), но при запуске (МП) вылетает данная ошибка - (МП) при этом завершает свою работу.
Завершаю 2009 и стартую 7,0 все сного работает.
Спасибо. С Уважением, Дмитрий.
Аппаратное обеспечение:
CPU: Intel i5 (4 Core)
RAM: 4 Gb DDR3
HDD: 1Tb Hitachi
HDD: 160 Gb Hitachi
Остальное неважно
Установленное программное обеспечение:
Windows 7 Ultimate 64 bit
Embarcadero RAD Studio XE2
Borland InterBase 7.0 (WI-V7.0.0.206)
CodeGear InterBase SMP 2009 (9.0.3.437) - поставил, чтобы посмотреть как эта версия будет работать с многоядерным процессором
Компаненты для доступа к БД стандартные для Студии ХЕ2
Моя программа (МП) - Написаная в Студии ХЕ2 для замера времени выполнения операций при работе с БД.
Файл базы данных INV.GDB создан IBExpert.
(МП) выполняет следующие действия: Генерация данных - заполняет поля таблиц произвольными значениями в количестве указаном в Edit (например 1 000 000 записей), Поиск посредством запроса "select", Подсчет количества записей в таблице, Очистка таблицы.
По поводу того, что ibserver.exe запускается не как сервис не пойму почему. Раньше на ХР и 32 битной 7 инсталятор устанавливал Interbase и он работал как серсис, а здесь на 64 бит не хочет.
Вернемся к нашим овцам - Так вот при работе InterBase 7.0 (МП) запускается и можно выполнить любое из выше описаных действий. Запускаю сервер InterBase SMP 2009 (7.0 соответственно остановлен) (сервер стартует без каких-либо ошибок), но при запуске (МП) вылетает данная ошибка - (МП) при этом завершает свою работу.
Завершаю 2009 и стартую 7,0 все сного работает.
А какой формат БД будет родным для 2009? Случаем не *.ib? Если так, то как можно переконвертировать БД в новый формат (backup - restore)?С другой стороны, если вы используете 7.0 и 2009 над одной базой, значит база в формате 7.0, что не является родным для 2009.
Спасибо. С Уважением, Дмитрий.
Re: Проблема с InterBase 2009
вы отладчиком умеете пользоваться? это чтобы определить, при чем "при этом" вылетает ошибка.но при запуске (МП) вылетает данная ошибка - (МП) при этом завершает свою работу.
расширение файла - это не формат.А какой формат БД будет родным для 2009? Случаем не *.ib?
про форматы БД тут
www.ibase.ru/devinfo/prevver.htm
p.s. у вас слишком много "начинающих" вопросов. рекомендую почитать статьи на сайте.
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Здраствуйте.
Спустя некоторое время решил еще раз установить сервер InterBase 2009 SMP
Cистема: Windows 8 64 bit.
Версия: 9.0.0.206
При запуске моей программы выдаються следующие ошибки:
Note: Программа нормально работала на версии сервера Interbase 7.0 WI-V7.0.0.206
Перепробовал различные варианты запуска:
- автоматически, служба - Unable to start the server. Отказано в доступе
- вручную, служба - Unable to start the server. Отказано в доступе
- автоматически, приложение - Access violation at adress 4055C416 in module 'gds32.dll'. Read of adress 02842000.
- вручную, приложение - Access violation at adress 4055C416 in module 'gds32.dll'. Read of adress 02842000.
Все без результатно
Пробовал запускать IBMgr от имени администратора - во всех случаях выдает
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_2"
Уже потерял всякую надежду, также пробовал ставить и Interbase 7.0, но и этот сервер безрезультатно, хотя на семерке получалось с ним работать только при условии запуска в виде приложения.
Может кто подсказать как вообще это побороть, а то уже голову сломал.
Спасибо, надеюсь на Вашу помощь.
С Уважением, Дмитрий.
Спустя некоторое время решил еще раз установить сервер InterBase 2009 SMP
Cистема: Windows 8 64 bit.
Версия: 9.0.0.206
При запуске моей программы выдаються следующие ошибки:
Note: Программа нормально работала на версии сервера Interbase 7.0 WI-V7.0.0.206
Перепробовал различные варианты запуска:
- автоматически, служба - Unable to start the server. Отказано в доступе
- вручную, служба - Unable to start the server. Отказано в доступе
- автоматически, приложение - Access violation at adress 4055C416 in module 'gds32.dll'. Read of adress 02842000.
- вручную, приложение - Access violation at adress 4055C416 in module 'gds32.dll'. Read of adress 02842000.
Все без результатно
Пробовал запускать IBMgr от имени администратора - во всех случаях выдает
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_2"
Уже потерял всякую надежду, также пробовал ставить и Interbase 7.0, но и этот сервер безрезультатно, хотя на семерке получалось с ним работать только при условии запуска в виде приложения.
Может кто подсказать как вообще это побороть, а то уже голову сломал.
Спасибо, надеюсь на Вашу помощь.
С Уважением, Дмитрий.
Re: Проблема с InterBase 2009
где вы ее выкопали?Версия: 9.0.0.206
http://www.ibase.ru/devinfo/allversions.htm
это как? я не понял, чем для вас отличается запуск службы автоматически и вручную.- вручную, служба
в общем, я бы посоветовал сначала взять последний сервис-пак. Ну и уточнить, что за Win8.
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Данную версию вытянул через rutracker.
А по поводу запусков, приношу извинения - неправильно выразился.
В Interbase Manager есть "переключатели"
Startup Mode (RadioButton)
- Automatic
- Manual
ну и (CheckBox)
Run the InterBase server as service on Windows NT
Вот здесь я и пробовал все возможные варианты.
А по поводу Windows 8, если Вы имеете ввиду номер релиза - тогда уточню и сообщу.
А по поводу запусков, приношу извинения - неправильно выразился.
В Interbase Manager есть "переключатели"
Startup Mode (RadioButton)
- Automatic
- Manual
ну и (CheckBox)
Run the InterBase server as service on Windows NT
Вот здесь я и пробовал все возможные варианты.
А по поводу Windows 8, если Вы имеете ввиду номер релиза - тогда уточню и сообщу.
Re: Проблема с InterBase 2009
поздравляю.Данную версию вытянул через rutracker.
а вы сами с Панель Управления, Администрирование, Сервисы не знакомы?Вот здесь я и пробовал все возможные варианты.
Вообще, вполне вероятно что IB 2009 несколько несовместим с Win8, поскольку Win8 вышла в 2012 году, а IB2009 - в 2008 году. Почему я и обратил внимание, что неплохо бы использовать сервис-пак 2010 года.
Насчет av в gds32.dll ничего не могу сказать, такого уже давно не видел. Вин8 у вас тоже с рутрекера, или купленная? Если все с рутрекера, то мне непонятно, зачем все эти мучения.
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Поставил Windows 8, чтобы посмотреть, что за зверь такой, ну и соответственно изучить что и как, а так как IB 7.0 запустить неудалось решил попробовать поставить версию посвежее.... то мне непонятно, зачем все эти мучения.
Спасибо Вам большое. Все получилось.
Еще раз перечитал ссылку http://www.ibase.ru/devinfo/prevver.htm, которую Вы давали еще раньше.
По итогу выяснилось, что моя программа использовала файл БД созданный IB 7.0 (ODS 11.0), на виртуальной машине поставил IB 7.0, сделал backup, затем уже на IB 2009 сделал restore и все заработало.
Единственно, что не желает работать, так этот код
Код: Выделить всё
select
TB_MAIN.PERIOD, TB_MAIN.DATE_EDIT, TB_MAIN.NUMB_REG, TB_MAIN.SUMMA, TB_MAIN.KV_SM,
TB_MAIN.EL_SM, TB_MAIN.GZ_SM, TB_MAIN.CW_SM, TB_MAIN.HW_SM,
TB_MAIN.ST_SM, TB_MAIN.OT_SM, TB_MAIN.MS_SM, TB_MAIN.TELEPHONE,
TB_POKAZ.EL_STR, TB_POKAZ.EL_END, TB_POKAZ.EL_RAZ, TB_POKAZ.GZ_STR, TB_POKAZ.GZ_END, TB_POKAZ.GZ_RAZ,
TB_POKAZ.CW_STR, TB_POKAZ.CW_END, TB_POKAZ.CW_RAZ, TB_POKAZ.HW_STR, TB_POKAZ.HW_END, TB_POKAZ.HW_RAZ,
TB_POKAZ.ST_STR, TB_POKAZ.ST_END, TB_POKAZ.ST_RAZ, TB_POKAZ.OT_STR, TB_POKAZ.OT_END, TB_POKAZ.OT_RAZ
from TB_MAIN
inner join TB_POKAZ
on TB_POKAZ.NUMB_REG = TB_MAIN.NUMB_REG
where TB_MAIN.DATE_EDIT between :dateparam1 and :dateparam2
order by TB_MAIN.NUMB_REG;
Могу предположить, что IB 2009 v9.0.0.206 как-то неверно работает объединение таблиц. (Информацию по Вашей ссылке изучил http://www.ibase.ru/devinfo/allversions.htm).
Скажите пожалуйста, этот "баг" можно как-то обойти, или тоько установка другой версии только поможет?
Так как Вы являетесь непосредственным представителем компании Embarcadero, немогли-бы Вы ответить на несколько вопросов другой тематики.
1) Interbase XE3 Developer Edition - как я понял из описания на сайте - это бесплатная версия продукта для разработчиков, которая не содержит каких-либо больших технических ограничений по использованию (работа по сети и т.п., ограничения времени работы)? Или все-таки ограничения имеються. (так и не смог найти информацию об этом).
2) немножко не понял такого нюанса - You must use one of the other paid versions of InterBase to use for deployment and actual production. - Для использования Developer Edition версии необходимо чтобы была лицензия на основной продукт?
3) какой вариант лицензии необходим например для использования Сервер + 5 клиентских ПК и сколько стоит ($ или грн.)?
4) лицензия на 1 клиента - это означает, что к БД может подключаться 1 пользователь. А если например на сервере есть несколько разных БД, то 1 пользователь может подключиться только к одной из БД или он может подключиться одновременно к нескольким БД? Или все-таки это касается подключения к одной БД одного пользователя.
Большое спасибо.
С Уважением, Дмитрий.
Re: Проблема с InterBase 2009
В следующий раз редактируйте код (в сообщении), пожалуйста - уберайте все эти кавычки, IBDSet и прочее, не относящееся к самому запросу, как я сделал за вас. Неудобно же читать.Единственно, что не желает работать, так этот код
по коду - нельзя дату как строку подсовывать в запрос, если только вы абсолютно уверены, что передаете дату в строковом формате IB. Крайне желательно всегда использовать для дат (и вообще) параметры (как я прописал в вашем запросе).
ваш запрос смешивает join и where, надеюсь, вы понимаете, что делаете (а скорее всего нет)
http://www.ibase.ru/devinfo/joins.htm
также я бы посоветовал использовать явные алиасы таблиц, а не писать вот эти портянки с TB_POKAZ.... TB_POKAZ... TB_POKAZ...
сомневаюсь. у вас с форматом даты скорее что-то не то. Ваш запрос в IBExpert на том же диапазоне дат работает?как-то неверно работает объединение таблиц
до тех пор, пока вы не уверены, чей это "баг", принято считать его или своим, или не багом вообще.Скажите пожалуйста, этот "баг" можно как-то обойти
не являюсь. Представители сидят в московском представительстве. А я - авторизованный партнерТак как Вы являетесь непосредственным представителем компании Embarcadero
developer edition содержит только формальный запрет на использование по сети, из физических ограничений там вроде работа не более 48 часов. Других физических ограничений нет.это бесплатная версия продукта для разработчиков, которая не содержит каких-либо больших технических ограничений по использованию
такой и нужен - сервер + 5 клиентов. IBMX03ELEWM05 стоит $700 для XE3, и $750 для 2009. Если речь про гривны, то покупайте у Софтпрома и т.д.какой вариант лицензии необходим например для использования Сервер + 5 клиентских ПК и сколько стоит ($ или грн.)?
до 4-х подключений с 1 компьютера к одной или разным БД. Все это написано тутлицензия на 1 клиента - это означает, что к БД может подключаться 1 пользователь.
http://www.ibase.ru/ib2007license.htm
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Спасибо, учту.В следующий раз редактируйте код (в сообщении), пожалуйста - уберайте все эти кавычки, IBDSet и прочее, не относящееся к самому запросу, как я сделал за вас. Неудобно же читать.
Запрос этот писал давно (тогда еще параметры не использовал), и как-то не придал этому значение, когда решил немного переделать программу, сейчас же стараюсь использовать параметры везде.Крайне желательно всегда использовать для дат (и вообще) параметры (как я прописал в вашем запросе).
Да соглашусь, что несовсем до конца понял это. Да я чистал данную статью, и из описанных там вариантов на тот момент мне показался подходящим вариантваш запрос смешивает join и where, надеюсь, вы понимаете, что делаете (а скорее всего нет)
http://www.ibase.ru/devinfo/joins.htm
Код: Выделить всё
select c.id clientid, c.name, o.id orderid, o.odate
from clients c join orders o on c.id = o.c_id
where c.name starting with 'A'
По причине того что это был мой первый тогда запрос с объединением, и чтобы потом не путаться решил отказаться от алиасов, но теперь обязательно переделаю.также я бы посоветовал использовать явные алиасы таблиц, а не писать вот эти портянки с TB_POKAZ.... TB_POKAZ... TB_POKAZ...
Спасибо большое.
С Уважением, Дмитрий.
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Большое Вам спасибо, Дмитрий. С Вашей помощью у меня получилось.
Единственно, что у меня не вызвало небольшие затруднения, так это условие объединения таблиц
перепробовал все, как мне показалось, возможное и отбрасывал всякие дополнительные условия по фильтрованию и вместо перечисления полей ставио *, и пробовал неявные объединения.
Ничто не получалось.
Но вот если убрать условие объединения, то сразу появляется результат (конечно множественное дублирование в DBGrid, но записи видно).
пришлось сделать через like:
но как мне кажеться использование LIKE в условие объединения не есть правильно.
Также я заметил данную особенность при попытке сделать Master-Detail
В компоненте DataSet_Detail в свойстве DataSource указан DataSet_Master
запрос на выборку выглядит так
и не работает (DBGrid пустой)
Если = заменить на like
то все работате.
И такое поведение для меня осталось загадкой.
Или может я что-то не так делаю?
Если Вас не затруднит, не моглибы Вы прояснить данный вопрос.
Спасибо.
С Уважением, Дмитрий.
Код: Выделить всё
select
M.PERIOD, M.DATE_EDIT, M.NUMB_REG, M.SUMMA, M.KV_SM, M.EL_SM, M.GZ_SM, M.CW_SM, M.HW_SM, M.ST_SM, M.OT_SM, M.MS_SM, M.TELEPHONE,
P.EL_STR, P.EL_END, P.EL_RAZ, P.GZ_STR, P.GZ_END, P.GZ_RAZ, P.CW_STR, P.CW_END, P.CW_RAZ, P.HW_STR, P.HW_END, P.HW_RAZ,
P.ST_STR, P.ST_END, P.ST_RAZ, P.OT_STR, P.OT_END, P.OT_RAZ
from TB_MAIN M
inner join TB_POKAZ P
on P.NUMB_REG like M.NUMB_REG
where M.DATE_EDIT between :dateparam1 and :dateparam2
order by M.NUMB_REG
Код: Выделить всё
on P.NUMB_REG = M.NUMB_REG
Ничто не получалось.
Но вот если убрать условие объединения
Код: Выделить всё
on P.NUMB_REG = M.NUMB_REG
пришлось сделать через like:
Код: Выделить всё
on P.NUMB_REG like M.NUMB_REG
Также я заметил данную особенность при попытке сделать Master-Detail
В компоненте DataSet_Detail в свойстве DataSource указан DataSet_Master
запрос на выборку выглядит так
Код: Выделить всё
select * from my_table where ID = :ID
Если = заменить на like
Код: Выделить всё
select * from my_table where ID like :ID
И такое поведение для меня осталось загадкой.
Или может я что-то не так делаю?
Если Вас не затруднит, не моглибы Вы прояснить данный вопрос.
Спасибо.
С Уважением, Дмитрий.
Re: Проблема с InterBase 2009
в вашем случае inner необязательное слово, и
прекрасно заменяется на
вообще объединение по like это ад какой то. LIKE предполагает наличие шаблона, то есть
field like 'data%', field like '%data', field like '%data%'.
В вашем случае like писать не надо, надо писать P.NUMB_REG = M.NUMB_REG.
Код: Выделить всё
from TB_MAIN M
inner join TB_POKAZ P
on P.NUMB_REG like M.NUMB_REG
where M.DATE_EDIT between :dateparam1 and :dateparam2
Код: Выделить всё
from TB_MAIN M, TB_POKAZ P
where P.NUMB_REG like M.NUMB_REG
and M.DATE_EDIT between :dateparam1 and :dateparam2
field like 'data%', field like '%data', field like '%data%'.
В вашем случае like писать не надо, надо писать P.NUMB_REG = M.NUMB_REG.
очевидно, у вас в таблицах какие-то странные данные. Объединения делаются по точному совпадению. Всякие like, containing, starting with это уже от лукавого, значит данные совпадают частично.Или может я что-то не так делаю?
Re: Проблема с InterBase 2009
like без шаблона идентичен равенству. Разница одна - джойн по like-у никогда не пойдет через индекс, в отличие от джойна по равенству. Получается, что поиск по индексу не возвращает данные, в то время как поиск натуралом - возвращает. Вывод - или индекс битый, или в IB что-то сломали.
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
А мог-ли сломаться индекс при переходе с InterBase 7.0 на InterBase 2009 посредством BackUp-Restore и лечится-ли это?dimitr писал(а):like без шаблона идентичен равенству. Разница одна - джойн по like-у никогда не пойдет через индекс, в отличие от джойна по равенству. Получается, что поиск по индексу не возвращает данные, в то время как поиск натуралом - возвращает. Вывод - или индекс битый, или в IB что-то сломали.
И какие могут быть последствия, если оставить как есть (т.е. LIKE)?
Спасибо.
С Уважением, Дмитрий.
Re: Проблема с InterBase 2009
для начала проверяем гипотезу насчет индекса:
select * from my_table where ID = :ID
и
select * from my_table where ID = :ID plan (my_table natural)
и еще вот так:
select count(*) from my_table
и
select count(*) from ( select ID from my_table order by 1 )
Разные результаты будут или одинаковые? Ну и что выдает gstat для индекса по my_table.id?
select * from my_table where ID = :ID
и
select * from my_table where ID = :ID plan (my_table natural)
и еще вот так:
select count(*) from my_table
и
select count(*) from ( select ID from my_table order by 1 )
Разные результаты будут или одинаковые? Ну и что выдает gstat для индекса по my_table.id?
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Наконец добрался до базы.
= пустой результат
= выдает запись соответствующая NUMB_REG
= 5
=
c этим запросом у меня не получилось. Во первых выдает ошибку - Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, char 23. select.
Запрос select NUMB_REG from tb_main order by 1 выдает все записи первый столбца.
Теперь попробую высказать свои соображения.
Если я правильно понял 1) и 4) запросы возвращают результаты по индексу $NUMB_REG , а 2) и 3) меную его.
Соответственно пустой результат в 1) - "битый" индекс.
По gstat кроме ключей -r -t -h ничего не нашел.
По файлу БД gstat выдал
Не уверен, что правильно, но поправте меня пожалуйста.
Спасибо.
С Уважением, Дмитрий.
Код: Выделить всё
1) select * from tb_main where NUMB_REG = :NUMB_REG
Код: Выделить всё
2) select * from tb_main where NUMB_REG = :NUMB_REG plan (tb_main natural)
Код: Выделить всё
3) select count(*) from tb_main
Код: Выделить всё
4) select count(*) from ( select NUMB_REG from tb_main order by 1 )
c этим запросом у меня не получилось. Во первых выдает ошибку - Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, char 23. select.
Запрос select NUMB_REG from tb_main order by 1 выдает все записи первый столбца.
Теперь попробую высказать свои соображения.
Если я правильно понял 1) и 4) запросы возвращают результаты по индексу $NUMB_REG , а 2) и 3) меную его.
Соответственно пустой результат в 1) - "битый" индекс.
По gstat кроме ключей -r -t -h ничего не нашел.
По файлу БД gstat выдал
Код: Выделить всё
Database header page information:
Flags 0
Checksum 12345
Write timestamp Dec 15, 2012 21:25:44
Page size 4096
ODS version 13.0
Oldest transaction 1018
Oldest active 1019
Oldest snapshot 1019
Next transaction 1147
Sequence number 0
Next attachment ID 0
Implementation ID 16
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Dec 9, 2012 22:00:44
Attributes
Variable header data:
Sweep interval: 20000
*END*
Database file sequence:
File HM_MNGR6.GDB is the only file
Database log page information:
Creation date
Log flags: 2
No write ahead log
Next log page: 0
Variable log data:
Control Point 1:
File name:
Partition offset: 0 Seqno: 0 Offset: 0
Control Point 2:
File name:
Partition offset: 0 Seqno: 0 Offset: 0
Current File:
File name:
Partition offset: 0 Seqno: 0 Offset: 0
*END*
Your user name and password are not defined. Ask your database administrator to
set up an InterBase login.
Спасибо.
С Уважением, Дмитрий.
Re: Проблема с InterBase 2009
значит база битая, и ей надо срочно делать backup/restore.= выдает запись соответствующая NUMB_REG
http://www.ibase.ru/devinfo/gbak.htm
и при чем тут gstat??? Впрочем, о gstat спросил dimitr, а вы похоже фишку в утилитах IB не рубите вообще. Забейте на gstat, короче, научитесь потом.
Re: Проблема с InterBase 2009
gstat в том числе покажет (если не забыть ему указать логин/пароль) число ключей в проблемном индексе. Т.е. можно будет понять, что именно не так - ключа не хватает (явно битый индекс) или причина в чем-то другом.
-
- Сообщения: 56
- Зарегистрирован: 05 дек 2007, 18:09
Re: Проблема с InterBase 2009
Большое спасибо kdv и dimitr.
В ближаешее время как можно скорее сделаю backup/restore.
Добавлено 18.12.2012 11:45
Выполнил backup/restore при помощи IBExpert. Когда делал restore дополнительно поставил галочку Деактивировать индексы, после чего проблема исчезла.
Запросы
стали выдавать одинаковые результаты.
Получается, что программа (написана с использованием компонентов InterBase Admin RAD из RAD Studio 2010) с помощью которой я делал backup/restore не восстанавливала индексы. C ее помощью я переводил базу с сервера Interbase 7.0 на Interbase 2009.
Большое спасибо за помощь.
С Уважением, Дмитрий.
В ближаешее время как можно скорее сделаю backup/restore.
Добавлено 18.12.2012 11:45
Выполнил backup/restore при помощи IBExpert. Когда делал restore дополнительно поставил галочку Деактивировать индексы, после чего проблема исчезла.
Запросы
Код: Выделить всё
select * from tb_main where NUMB_REG = :NUMB_REG
select * from tb_main where NUMB_REG = :NUMB_REG plan (tb_main natural)
Получается, что программа (написана с использованием компонентов InterBase Admin RAD из RAD Studio 2010) с помощью которой я делал backup/restore не восстанавливала индексы. C ее помощью я переводил базу с сервера Interbase 7.0 на Interbase 2009.
Большое спасибо за помощь.
С Уважением, Дмитрий.