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