powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Table corrupting and autoincrement
5 сообщений из 5, страница 1 из 1
Table corrupting and autoincrement
    #39831043
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть небольшое приложение на свободных таблицах. Раньше все работало, но идентификаторы для первичных ключей формировались отдельной функцией(определялось максимальное значение ключа для текущей таблицы "x" и для новой записи подставлялось "x+1"). После этого была произведена замена типа ключевого поля с Numeric на Integer(Autoincrement) и ключи стали формироваться автоматически при вставке новой записи. Но периодически таблицы с ключевым полей типа Integer(Autoincrement) начали портиться ("Table has become corrupted. The table will need to be repaired before using again. (Error 2091)")! Может кто подскажет в чем может быть причина? (Программа сетевая).
...
Рейтинг: 0 / 0
Table corrupting and autoincrement
    #39831084
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего с сетью проблемы. Во-первых в свойствах расшаренной папки отключи кэширование. Во-вторых попроси юзеров не выключать сервер когда другие работают.
...
Рейтинг: 0 / 0
Table corrupting and autoincrement
    #39831102
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Сервер работает круглосуточно. По поводу кэширование есть мысли, не знаю верные ли:
Фрагмент кода, где участвует таблица с автоинкрементом, и, возможно, место ошибки:
Код: sql
1.
2.
3.
4.
.............
Insert into tab1 (..., ...., ...) values (...., ...., .....)
use in tab1
............



Думаю, что какие то операции с insert производятся с использованием кэша, данные из которого не успевают сохраняться на диск до вызова команды "use". Может sql-comands не дружат с командами типа use (foxpro-commands), возможно они как то реализованы по разному и не взаимодействуют между собой (например я думал что команда use должна вызывать что то типа flush кэша, а как на самом деле хз как там все работает).
...
Рейтинг: 0 / 0
Table corrupting and autoincrement
    #39834417
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переписал код, пока полет нормальный

Раньше было:
Код: sql
1.
INSERT INTO table2 (column2, column3, ...) SELECT column2, column3, ... FROM table1 


Где поле column1 - было автоинкрементом и генерировалось автоматически.

Теперь стало так:
Код: sql
1.
2.
3.
4.
5.
SELECT table1
SCAN
   lnNewId = NewId()
   INSERT INTO table2 (column1, column2, column3, ...) VALUES(lnNewId, ...,  ...)
ENDSCAN



Возможно здесь дело даже не автоинкременте было, а в самой конструкции обновления (наличие подзапроса).
...
Рейтинг: 0 / 0
Table corrupting and autoincrement
    #39834551
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen Возможно здесь дело даже не автоинкременте было, а в самой конструкции обновления (наличие подзапроса).
Эта типичная проблема bulk upload (и не только FoxPro).
Вы обошли её довольно элегантно путем уменьшения объёма обновления таблицы до минимального значения - одной записи.
Просто и эффективно.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Table corrupting and autoincrement
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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