> Hi, we have a problem updating metadata (running sql update in java code via > JDBC but it appears to be an engine issue). We need to run a metadata update > for 100's of sites and the following problem appears to occur for all > databases we have used in testing. > We have a table 'Person' in which there is a 'LastName' varchar(30) column > that we need to lengthen to varchar(100). > However when we run: > ALTER TABLE PERSON ALTER COLUMN LASTNAME TYPE varchar(100) > we get the error: > Error: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544351. > unsuccessful metadata update > Column LASTNAME from table PERSON is referenced in RDB$1230 > > We have searched the database high& low for RDB$1230, mainly via IBExpert > (because I know no better way) and cannot see it anywhere. RDB$1230 seems to > be in some hidden shadow page(?) in the database or something?? One thing > that made me wonder was that earlier we were getting a constraint violation > because the LastName column is being used in a view, so before changing the > column we drop all views. So I revisited that and after dropping the views we > call commit, and even disconnect and reconnect to the database, so the view > should in no way(?) be affecting the ability to change the LastName column? > > One thing that does fix the ability to update the database is if we do a > backup and restore first, then all the update code works fine. (So seems > RDB$1230 is 'flushed' out of the system.) But in reality this is not a > practical option because of the sheer number of clients we have and the fact > that most of them won't even know what a database engine is (and cannot be > expected to do a backup/restore). > I can't see that we have a database corruption issue because the problem > occurs for each database we try. > > Our clients are mostly on 1.5.x and we are working on migrating them all to > 2.5.x... but in the short term we need to apply the above change. Any ideas > how to figure out what this rogue RDB$1230 element is and how to resolve or > work around it programmatically? BTW, it isn't always RDB$1230 - the number > varies - but the error is always on the LastName column as above.
I guess IBExpert has some kind of dependency showing for a particular table? This way you might be able to find out what object depends on the table/column. Of course, you could also query RDB$DEPENDENCIES. HTH. -- With regards, Thomas Steinmaurer Upscene Productions http://www.upscene.com http://blog.upscene.com/thomas/ Download LogManager Series, FB TraceManager today! Continuous Database Monitoring Solutions supporting Firebird, InterBase, Advantage Database, MS SQL Server and NexusDB!
