How to Fix “An old version of the database format was found” While Starting PostgreSQL

I would like to share with you on how to fix “An old version of the database format was found” While Starting PostgreSQL server. This error usually happen after we upgrade the postgresql from the lower version to higher version. As an example, we upgrade the postgresql version 8.2 to postgresql version 8.4.1 as below. You will get an error while you starting the postgresql.

Symptoms:
This error will appeared when starting the postgresql service

    [root@server ~]# service postgresql start
    
    An old version of the database format was found.
    You need to upgrade the data format before using PostgreSQL.
    See /usr/share/doc/postgresql-8.4.1/README.rpm-dist for more information.
    

Solution:
1. Assume that you have successfully backup the postgresql database.
2. Run this command.

    [root@server ~]# cd /var/lib/pgsql/data
    [root@server data]# ls
    base    pg_clog      pg_ident.conf  pg_multixact  pg_tblspc    PG_VERSION  postgresql.conf
    global  pg_hba.conf  pg_log         pg_subtrans   pg_twophase  pg_xlog     postmaster.opts
    [root@server data]# rm -rf *
    

Reinitialize the database.

    [root@server data]# service postgresql initdb
    Initializing database:                                     [  OK  ]
    

or you can proceed to directly start the database service.

    [root@server data]# service postgresql start
    Starting postgresql service:                               [  OK  ]
    

How to Reset the Directory Manager Password on RHEL 7 / CentOS 7
How to Reset the Directory Manager Password on RHEL 7 / CentOS 7

It is best practice to remember passwords, but because too many passwords, sometimes we forget. We are not encouraged to write the password on any paper or share the password...

How to Find Big Files Size on Linux RHEL/CentOS
How to Find Big Files Size on Linux RHEL/CentOS

As the linux administrator, sometimes we have to identify which files are most take much space in the linux server resulting in low free space. Low disk space can also...

Why Linux users should worry about malware and what they can do about it
Why Linux users should worry about malware and what they can do about it

Don’t drop your guard just because you’re running Linux. Preventing the spread of malware and/or dealing with the consequences of infection are a fact of life when using computers. If...

How to Reset Forgotten Root Password on Linux RHEL 7 / CentOS 7
How to Reset Forgotten Root Password on Linux RHEL 7 / CentOS 7

This short howto will explain the steps to reset a lost root password or to reset a forgotten root password on Linux RHEL 7 or CentOS 7. Basically, we will...

How to Update CentOS or Upgrade CentOS to the Latest Version
How to Update CentOS or Upgrade CentOS to the Latest Version

Recently, the latest version of CentOS 7.3 was released. All users of CentOS 7.0, 7.1 and 7.2 can upgrade their system to the most recent. This quick guide will explain...

How to Change your WordPress Username, Nickname and Display Name in MySQL
How to Change your WordPress Username, Nickname and Display Name in MySQL

After you create an account log in WordPress, you may want to change your WordPress username, as appropriate or due to security reason. However, you can not do this from...

How to Enable SSH Root Login on Ubuntu 16.04
How to Enable SSH Root Login on Ubuntu 16.04

As what we wrote in the previous article on how to allow SSH root on Ubuntu 14.04, after installing a fresh new copy of Ubuntu 16.04 LTS, we find that...

How to Change UUID of Linux Partition on CentOS 7
How to Change UUID of Linux Partition on CentOS 7

UUID (Universally Unique IDentifier) should be unique and it is used to identify storage devices on a linux system. If you cloned a virtual machine from vCenter, the metadata containing...

2 Comments

  • Avatar for Erming Pei Erming Pei says:

    Hi,

    Recently I encountered the same problem when upgraded postgresql from 8.2 to 8.4.
    Nice to see your fix solution. It seems that you destroy the database at first and then reinitialize it. My question is, after all the steps you offered, what should we do to recover the original database?

    Thanks,

    Erming

  • Avatar for Graham Graham says:

    Might want to take a look at the rm command. rm -rf * is dangerous if running as root!

Leave a Reply

Your email address will not be published. Required fields are marked *