powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблемы с блокировкой баз
13 сообщений из 13, страница 1 из 1
Проблемы с блокировкой баз
    #35995826
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через foxpro блокируют базу на запись командой Flock(), и я через VFP 9.0 не могу открыть эту базу даже на чтение, через фокс она нормально открывается.

VFP 9.0 выдает ошибку

Код: plaintext
File 'clerror.prg' does not exist. 

Что это за файл и где он должен быть? Спасибо.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35995851
Alex-ZZZЧерез foxpro блокируют базу на запись командой Flock(), и я через VFP 9.0 не могу открыть эту базу даже на чтение, через фокс она нормально открывается.

VFP 9.0 выдает ошибку

Код: plaintext
File 'clerror.prg' does not exist. 

Что это за файл и где он должен быть? Спасибо.Это у Вас надо спрашивать где у Вас такой файл и где он должен быть. Мы об этом не имеем и не можем иметь ни малейшего понятия. Предположить можем, что это обработчик ошибок, который у Вас куда-то затерялся.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35995883
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, имееться ввиду, что при попытке открыть просто через VFP, а не через мою программу. Тоесть этот файл должен быть гдето в самом VFP, как я понимаю.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35995906
Alex-ZZZНет, имееться ввиду, что при попытке открыть просто через VFP, а не через мою программу. Тоесть этот файл должен быть гдето в самом VFP, как я понимаю.Вы можете понимать все, что угодно, но от этого положение дел не изменится и самписный файл в стандлартной поставке фокса не появится. Можно предположить, что Вы открываете таблицу из базы данных, в которой и использован такой обработчик. В базе данных (не в таблице!) уже все проверили?
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35995975
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я просто копировал таблицу на сеть, блокировал ее через досовский фокс и пытался открыть через VFP 9.0 файл-открыть-имя таблицы, если ограничить длительность попытки подключения 10 секунд (SET REPROCESS TO 10 SECONDS) то выскакивала ошибка описанная вверху, если не ограничивать висит долго и упорно. Через досовский фокс все нормально открываеться, как только снимаешь блокировку то и через VFP открываеться.

Файл не самописный. Это как я понимаю может быть, что этого prg у меня не хватает в стандартной программе VFP.

Наверное нужно узнать где он должен находиться и взять его гдето и положить туда. Может вы можете поиском посмотреть где у вас он лежит и есть ли вообще и скинуть его мне. Спасибо.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996010
Alex-ZZZФайл не самописный. Это как я понимаю может быть, что этого prg у меня не хватает в стандартной программе VFP.

Наверное нужно узнать где он должен находиться и взять его гдето и положить туда. Может вы можете поиском посмотреть где у вас он лежит и есть ли вообще и скинуть его мне. Спасибо.Третий раз пишу - нету в стандартной поставке фокса таких фaйлов, нет.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996077
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, тогда вопрос в другом. Почему VFP не может просматривать в режиме SHARED таблицы заблокированые FLOCK() ?
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996091
Alex-ZZZЯсно, тогда вопрос в другом. Почему VFP не может просматривать в режиме SHARED таблицы заблокированые FLOCK() ?Потому, что эта функция блокирует весь файл.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996123
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что у вас возвращает

Код: plaintext
?"Error = ", ON("Error")

Если там окажется что-то, отличное от пустой строки, то дайте команду

Код: plaintext
ON ERROR

без параметров, чтобы отключить ваш собственный обработчик ошибок. Вероятно, вы где-то подключили свой собственный обработчик ошибок и забыли его выключить.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996181
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex-ZZZЯсно, тогда вопрос в другом. Почему VFP не может просматривать в режиме SHARED таблицы заблокированые FLOCK() ?
Из-за настройки

SET TABLEVALIDATE

Дело в том, что если эта настройка установлена в не четное значение (т.е. включено значение 1), то при открытии таблицы будет предпринята попытка заблокировать заголовок таблицы для проверки факта соответствия реального количества записей и того количества записей, которое записано в заголовке таблицы. А, поскольку заголовок таблицы оказался заблокирован командой FLOCK(), то это сделать становится невозможно. Как следствие, таблица вообще не открывается.

Исправить эту ситуацию можно добавив значение 4 в настройку SET TABLEVALIDATE. Она как раз и призвана игнорировать блокировку другим процессом. Т.е. в этом случае проверка просто не будет выполнена, но и сообщений об ошибках не будет.

По умолчанию, SET TABLEVALIDATE установлено в значение 3. Значит, надо сделать такую настройку

Код: plaintext
SET TABLEVALIDATE TO  3 + 4 

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

Текущее значение настройки можно посмотреть так

Код: plaintext
?SET("TABLEVALIDATE")
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996187
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.Alex-ZZZЯсно, тогда вопрос в другом. Почему VFP не может просматривать в режиме SHARED таблицы заблокированые FLOCK() ?Потому, что эта функция блокирует весь файл.

Вроде бы нет. Вот вырезка из хелпа про эту функцию.
Когда таблица блокирована, она становится доступной для чтения и записи только пользователю, установившему блокировку. Остальные пользователи сети имеют к таблице доступ только по чтению.

Я же не могу открыть даже на чтение.

ВладимирМ
Проверил. Ну и до этого я уже проверял, что если не ограничивать время попыток доступу то сообщение об ошибке не выскакивает, просто висит и все так как по умолчанию VFP будет пытаться подключиться бесконечно долго.
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996232
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМAlex-ZZZЯсно, тогда вопрос в другом. Почему VFP не может просматривать в режиме SHARED таблицы заблокированые FLOCK() ?
Из-за настройки

SET TABLEVALIDATE

Дело в том, что если эта настройка установлена в не четное значение (т.е. включено значение 1), то при открытии таблицы будет предпринята попытка заблокировать заголовок таблицы для проверки факта соответствия реального количества записей и того количества записей, которое записано в заголовке таблицы. А, поскольку заголовок таблицы оказался заблокирован командой FLOCK(), то это сделать становится невозможно. Как следствие, таблица вообще не открывается.

Исправить эту ситуацию можно добавив значение 4 в настройку SET TABLEVALIDATE. Она как раз и призвана игнорировать блокировку другим процессом. Т.е. в этом случае проверка просто не будет выполнена, но и сообщений об ошибках не будет.

По умолчанию, SET TABLEVALIDATE установлено в значение 3. Значит, надо сделать такую настройку

Код: plaintext
SET TABLEVALIDATE TO  3 + 4 

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

Текущее значение настройки можно посмотреть так

Код: plaintext
?SET("TABLEVALIDATE")


Да проблема решилась большое спасибо !!!
...
Рейтинг: 0 / 0
Проблемы с блокировкой баз
    #35996301
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex-ZZZ ВладимирМ
Проверил. Ну и до этого я уже проверял, что если не ограничивать время попыток доступу то сообщение об ошибке не выскакивает, просто висит и все так как по умолчанию VFP будет пытаться подключиться бесконечно долго.

Совет по ON ERROR - это ответ на вопрос темы про файл "File 'clerror.prg' does not exist". Очевидно, что у вас произошел перехват ошибки и попытка ее обработки.

Если FoxPro не находит функцию или процедуру с именем CLERROR, то он предполагает, что речь идет о файле с таким же именем. Вот и появляется соответствующее сообщение об ошибке.

Судя по имени, это должна была быть какая-то переменная, которую использовали как функцию. Дишние скобки указали.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблемы с блокировкой баз
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]