Форум » LetoDB, HbNetio. » Leto DB Server (продолжение) » Ответить

Leto DB Server (продолжение)

alkresin: Только что открыл на Sourceforge новый проект - Leto DB Server - https://sourceforge.net/projects/letodb Это мультиплатформенный ( Windows, Unix/Linux ) сервер баз данных, предоставляющий клиентским программам доступ к dbf/cdx файлам, находящимся на удаленном сервере ( можно и на локальном компьютере запускать - в отладочных целях ). В общем, как ADS :). Проект - на стадии разработки, не все даже базовые функции еще реализованы, до оптимизации дело еще не дошло. Но работает :). Крутится у меня на сервере несколько дней, подключал до 15 клиентов, пока не падает. Мои программы работают с ним нормально. Преимущества по сравнению с обычным файл-сервером: 1) Безопасность - базы могут быть в каталоге, недоступном для клиентских компьютеров - никто их случайно не удалит и не повредит. 2) Поскольку базы открываются серверной программой, а не клиентской, ее целостности ничего не грозит при случайном отключении клиентского компьютера. 3) значительное уменьшение сетевого траффика. 4) Должен быть, по идее, выигрыш в скорости. 5) Возможность контроля за пользователями с помощью утилиты manage ( можно придумать и другие формы контроля ). 6) Можно будет сделать транзакции, stored procedures на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.

Ответов - 193, стр: 1 2 3 4 5 6 7 8 9 10 All

Oskar_Aa: "Простая" без LETODB версия работает на УРА... функция FILE() возвращает .F. в LETODB и .T. без LETO Благодарю за помощь...

alkresin: Вы же понимаете, что letodb.exe открывает таблицы и индексы через dbfcdx - т.е. это dbfcdx ругается на ваш индекс, выдает при его открытии такую ошибку. Может, там в индексном выражении что-то необычное ( UDF, алиасы, переменные ). Если получится, сделайте урезанный вариант dbf с cdx, убедитесь, что leto по-прежнему на них ругается и вышлите мне на email. функция FILE() возвращает .F. в LETODB и .T. без LETO С LETO, наверное, leto_file() ? А EnableFileFunc = 1 в .ini на сервере у вас стоит ?

Oskar_Aa: По индексу в LETO обошел ошибку. (Просто проиндексировал все БД, раньше пытался открыть индексный фай созданный без LETO). Александр,есть несколько вопросов: 1. максимальный размер символьного поля в БД для построения индесксного ключа (при длине 250 байт - ошибка, даже на примере TEST_TA.prg), сократил до 200 байт - пока нормально 2. Где можно посмотреть HELP по LETODB.exe (LETO_File() - не знал Можно выслать образец файла .INI....? По первому вопросу : Структура файла:LCHT01.DBF Поле Тип 1 CODE_FULL C 50 0 2 CODE_NBS C 5 0 3 CODE_ORG N 3 0 4 CODE_OTD N 3 0 5 VAL C 3 0 6 CODE_VIP N 7 0 7 CODE_OTR N 3 0 8 CODE_ZLG N 3 0 9 CODE_KAS N 3 0 10 CODE_COLOR N 3 0 11 CODE_ODB C 50 0 12 NAME_CHT C 200 0 13 DATE_OPN D 8 0 14 DATE_SRK D 8 0 15 DATE_DEL D 8 0 16 TYPE_SCH N 1 0 17 STATUS N 1 0 18 SYMV N 3 0 19 SHIFR N 3 0 20 SROK_DOG N 6 0 21 DOGOVOR N 5 0 22 DATE_DOG D 8 0 23 MEMO_CHET C 50 0 24 ARM N 1 0 25 ARM_NAME C 1 0 26 DATE_DBF D 8 0 27 DATE_PRC D 8 0 28 SUM_DOG N 10 0 29 DEL_TE C 1 0 30 KORRCHET C 1 0 31 CODE_VAL C 3 0 32 PRIZNAK_NL N 3 0 33 STYLE_DATA N 1 0 34 OPN_CLS C 1 0 35 CHET_TYPE C 50 0 Index On Str(Code_Org,3)+Code_Nbs+Val+Name_Cht To 'LCHT_10.CDX' ЕСЛИ поле NAME_CHT 250 байт - ошибка |Error LETO/1021 Data type error: -003:34-1026 Arguments: () |Error at ...: ORDCREATE(0) in Module: |Called from : DBCREATEINDEX(61) in Module: source\rdd\rddord.prg


alkresin: По индексу в LETO обошел ошибку. (Просто проиндексировал все БД, раньше пытался открыть индексный фай созданный без LETO). Т.е., индексы, созданные letodb, отличаются от созданных вашей программой с dbfcdx ? Это настораживающий признак и вам стоит выяснить, отчего так происходит. Скорее всего, дело в установленной кодовой странице. максимальный размер символьного поля в БД для построения индесксного ключа (при длине 250 байт - ошибка, даже на примере TEST_TA.prg), сократил до 200 байт - пока нормально Надо будет увеличить размер буфера. Где можно посмотреть HELP по LETODB.exe (LETO_File() - не знал В readme.txt. Списка функций в официальном релизе, правда, нет, он войдет в следующий релиз. Вот он: LETO_CONNECT( cAddress [, cUserName, cPassword ] ) --> nConnection, -1 if failed LETO_CONNECT_ERR() --> nError LETO_DISCONNECT() LETO_SETCURRENTCONNECTION( nConnection ) LETO_GETCURRENTCONNECTION() --> nConnection LETO_GETSERVERVERSION() --> cVersion LETO_BEGINTRANSACTION() LETO_ROLLBACK() LETO_COMMITTRANSACTION( [ lUnlockAll ] ) --> lSuccess LETO_INTRANSACTION() --> lTransactionActive LETO_SUM( cFieldName [, cFilter ] ) --> nSumma LETO_ISFLTOPTIM() --> lFilterOptimized LETO_SETSKIPBUFFER( nSkip ) LETO_FILE( cFileName ) --> lFileExists LETO_FERASE( cFileName ) --> -1 if failed LETO_FRENAME( cFileName, cFileNewName ) --> -1 if failed LETO_FERROR() --> nError LETO_MGGETINFO() LETO_MGGETUSERS() LETO_MGGETTABLES() LETO_MGKILL() LETO_USERADD( cUserName, cPass [, cRights ] ) --> lSuccess LETO_USERPASSWD( cUserName, cPass ) --> lSuccess LETO_USERRIGHTS( cUserName, cRights ) --> lSuccess LETO_USERFLUSH() --> lSuccess Можно выслать образец файла .INI....? В readme.txt описаны все опции ini - файла, а какие из них ставить - зависит от ваших конкретных нужд, поэтому я не вижу смысла в каком-то образце.

PSP: Для Александра Кресина. Сегодня скачал с CVS LetoDB: 2009-06-30 12:05 UTC+0300 Alexander Kresin (alex/at/belacy.belgorod.su) * source/client/leto1.c * Increased buffer size for seek * source/server/server.prg ! Bug fixed in hs_openindex() Exe-шник собрался нормально. Но при попытке открыть базы процесс letodb.exe (на сервере) слетает с ошибкой. Начало файла letodb_crash.log: Breakdown at: 2009.06.30 14:02:03 Unrecoverable error 6005: Exception error: %s Exception Code:C0000005 Exception Address:00433EAB EAX:00000000 EBX:0000001A ECX:00000005 EDX:000000EC ESI:00000000 EDI:0000000D EBP:00EEFC20 CS:EIP:001B:00433EAB SS:ESP:0023:00EEFC08 DS:0023 ES:0023 FS:003B GS:0000 Flags:00010246 CS:EIP: 8B 80 7C 03 00 00 C3 90 90 A1 84 AE 4B 00 50 E8 SS:ESP: 004921E8 0000000D 00000000 003D56B1 0000001A 003D56B1 00EEFC40 0044D1D4 00EEFD5C 0000000D 003D56C2 003D56B1 003D56C1 003D993C 00EEFE6C 00404E82 Вот эта версия 2009-06-11 14:10 UTC+0300 Alexander Kresin (alex/at/belacy.belgorod.su) * Readme.txt * Added functions list. нормально открывает базы. Что я делаю не так? :)

alkresin: А Harbour какой у вас ?

PSP: Harbour у нас вот такой: 2009-06-17 00:05 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/contrib/hbwin/axcore.c ! fixed GPF on ActiveX application exit caused by invalid AtlAxWinTerm() call. ; It's inline function and it does not exists in atl.dll ; MSDN says: When Do I Need to Call AtlAxWinTerm? AtlAxWinTerm unregisters the "AtlAxWin7" window class. You should call this function... If don't call this function, the window class will be unregistered automatically when the process terminates. ; Thanks Toninho for self contained 3 lines GPF sample without FWH, gtwvg, etc! Обновить надо?

Петр: PSP пишет: Обновить надо? Ждать надо. Изменения в ближайшее время будут и в Harbour и я подозреваю, что в LETO.

alkresin: Обновить надо? Нет, лучше не надо. Сегодня там были изменения в структуре RDD, которые я еще не отразил в letodb. А примерчик, который рушит letodb, можно ? А то у меня тут, вроде, все в порядке.

PSP: Примерчик: REQUEST HB_GT_WVT REQUEST HB_GT_WVT_DEFAULT REQUEST HB_CODEPAGE_RU866 REQUEST LETO PROCEDURE Main CLS HB_SetCodePage( "RU866" ) RDDSETDEFAULT( "LETO" ) ? Leto_File( "//192.168.1.100:2812/TEMP/Tov.dbf" ) WAIT QUIT Leto_File() возвращает .F., причем после паузы 2-3 секунды. Пример нормально завершается, а процесс letodb.exe на сервере слетает. ЗЫ: я в начале написал "открыть базы". Прошу прощения за введение в заблуждение. До открытия дело не доходит.

PSP: ЗЫЗЫ: попытка открытия приводит к тому же эффекту.

alkresin: Странно. У меня ничего подобного не наблюдается. Впрочем, у меня Harbour от сентября прошлого года. Попробую со свежим.

PSP: Ok. Спасибо.

alkresin: Попробовал со свежим - все в порядке... А чем вы строите letodb, каким bat'ником ?

PSP: Батник make_b32.bat. Поищу еще у себя грабли. Спасибо.

PSP: Вопрос закрыт. Грабли у меня. Причина оказалась в сборке Harbour. Нашел у себя исходники на 5 дней старше, чем использовал. Пересобрал harbour из них и пересобрал letodb. Все работает. Еще раз спасибо и прошу извинить за беспокойство.

Oskar_Aa: Доброе утро. Как работает ф/я RECNO() в LETODB? У меня возвращает 0..... FUNCTION MAIN LOCAL i,j,cPath := "//127.0.0.1:2812/" REQUEST LETO RDDSETDEFAULT( "LETO" ) DBCREATE(cPath+'Test1',{{'DOK','N',10,0},{'KOK','C',100,0}}) USE ( cPath+'Test1' ) NEW Alias File1 INDEX ON STR(Dok,10) TO ( cPath+'Test1_0' ) Index On KOK To ( cPath+'Test1_1' ) Set Index To ( cPath+'Test1_0' ),( cPath+'Test1_1' ) For I =1 To 1000 Append Blank Repl Dok With i,Kok With StrZero(I,6) ?Recno() inkey(0) Next

alkresin: Исправлю. Пока можете после Append Blank Repl Dok With i,Kok With StrZero(I,6) поставить COMMIT, будет правильно работать.

Oskar_Aa: Александр, ОК... Где потом забрать LETODB? Спасибо, по тэгам еще не разбирался....

alkresin: С CVS. Подробнее - на http://kresin.belgorod.su/rus/hrbfaq.html, только вместо harbour-project , harbour в батник надо ставить letodb.



полная версия страницы