Hello, Vasily!

Ovchinnikov Vasily wrote:

Хотелось бы механику возникновения этой ошибки понять. При наличии нескольких одновременно подключенных коллег теоретически могли менять метаданные НА ХОДУ. Обычно, следим за этим (все в одном помещении сидим) и просим всех ,кроме инициатора изменений, отключиться от базы. Но тут получается, что после изменения метаданных (ну, пусть поле урезали, например) кто-то ухитрился вставить в PB_SALE новую запись по старому формату. Так?

не так. например, было varchar(300), и запись с 288 символов
в этой строке. alter table не позволяет урезать varchar в меньшую
сторону. значит рубим через сист. таблицы (или IBExpert) - уменьшаем
до varchar(284). В результате при чтении запись в старом формате
преобразуется в новый формат, и возникает ошибка из-за "невлезания".

Запись найти можно через
select * from table
и fetchall

дальше можно проверить через
select id from table
where....

и select id, problemfield from table
where id = :id
однако это прокатывает для блобов, т.к. они читаются "отдельно".
С varchar может не пройти. давно я уже проверкой таких вещей не занимался.

если возможно, проще временно увеличить размер строки.

--
Dmitri Kuzmenko, www.ibase.ru, (495) 953-13-34

Ответить