Обсуждение: pg_upgrade: error when migrating from 8.3 to 9.1
I am trying to upgrade a database from postgresql 8.3.8 to 9.1. (Ubuntu 10.10 Maverick) It is crashing out with the following error: Adding support functions to new cluster ok Restoring database schema to new cluster "/usr/lib/postgresql/9.1/bin/psql" --set ON_ERROR_STOP=on --no-psqlrc --port 5435 --username "postgres" -f "/var/lib/postgresql/pg_upgrade_dump_db.sql" --dbname template1 >> "/dev/null" psql:/var/lib/postgresql/pg_upgrade_dump_db.sql:85146: ERROR: could not find function "pg_freespacemap_pages" in file "/usr/lib/postgresql/9.1/lib/pg_freespacemap.so" The code at line 85146 is as follows: CREATE FUNCTION pg_freespacemap_pages() RETURNS SETOF record LANGUAGE c AS '$libdir/pg_freespacemap', 'pg_freespacemap_pages'; Why does this happen? Any hints how this can be fixed? As a work around, is it safe to create this function in 9.1 and how do I do that? Help! Thanks in advance... -- View this message in context: http://postgresql.1045698.n5.nabble.com/pg-upgrade-error-when-migrating-from-8-3-to-9-1-tp5146289p5146289.html Sent from the PostgreSQL - admin mailing list archive at Nabble.com.
sayeed <sayeed.anjum@gmail.com> writes: > I am trying to upgrade a database from postgresql 8.3.8 to 9.1. (Ubuntu 10.10 > Maverick) > It is crashing out with the following error: > psql:/var/lib/postgresql/pg_upgrade_dump_db.sql:85146: ERROR: could not > find function "pg_freespacemap_pages" in file > "/usr/lib/postgresql/9.1/lib/pg_freespacemap.so" > Why does this happen? Because pg_freespacemap_pages() doesn't exist (and neither does the freespace map) in versions after 8.3. Had pg_upgrade existed at the time we removed the FSM, we might have taken a bit more care with what would happen in an upgrade situation ... but it didn't. You could do this via pg_dump and reload, in which case the missing functions would result in ignorable errors during the reload. If you want to do it via pg_upgrade, I think the most practical way is to drop the whole pg_freespacemap extension (ie, run its uninstall script) in your 8.3 installation, then do the upgrade, then install 9.1's version of the extension if you still want it. regards, tom lane