Why is MetaDefender Core unable to connect to the database?
Issue
MetaDefender Core fails to connect to the database. The following is displayed when connecting to the MetaDefender Core web console:

The following error is displayed in the core.log:
“[ERROR] <timestamp>:(core.postgres) Postgres issue, error=’Could not load postgres’s information from file', param-'config file is invalid, ....”
Cause
The ometascan_postegres.cat
and ometascan_postgres.dat
files have become corrupted.
Remediation Steps
- Stop the MetaDefender Core Service
- Backup the corrupted Files
Backup the corrupted ometascan_postgres.dat
and ometascan_postgres.cat
files to a different location for future reference.
- Windows: The files are located in the Core’s installation folder.
- Linux: The files are located at:
/usr/lib/ometascan/ometascan_postgres.cat
/usr/lib/ometascan/ometascan_postgres.dat
- Remove the Corrupted Files
ometascan_postgres.dat
andometascan_postgres.cat
files.
Delete the corrupted ometascan_postgres.dat
and ometascan_postgres.cat
files.
- Windows: Navigate to the Core’s installation folder and delete the files.
- Linux: Run the following commands:
sudo rm /usr/lib/ometascan/ometascan_postgres.cat
sudo rm /usr/lib/ometascan/ometascan_postgres.dat
- Create the Ignition File
Create an ignition file with the specified content.
- Windows: Create
C:\opswat\ometascan.conf
- Linux: Create
/etc/opswat/ometascan.conf
If you are restoring an existing database, you will need to provide the username and password credentials used previously. Please consult your internal change management documentation to get these credentials.
Add the following content to the file:
[dbserver]
type=your db type, 'local' for bundle postgres, 'remote' for remote postgres.
host=ip address of remote postgres. For bundle postgres, it has to be localhost.
port=port of postgres.
user=postgres's user.
password=postgres's password.
Example of an ignition file using bundled postgres:
[dbserver]
type=local
host=localhost
port=5432
user=mypostgresuser
password=mypostgrespassword
Customers who specified an instance name during initial Core installation will need to enter the correct value for instance_name in the ignition file. If not, Core will initiate a new database with the default instance name.
Example:
[dbserver]
type=local
host=localhost
port=5432
user=mypostgresuser
password=mypostgrespassword
instance_name=myinstancename
If customers have configured a private user for their database and want to reuse this private user, they need to ensure that correct private_username and private_password are set in the ignition file.
Example:
[dbserver]
type=local
host=localhost
port=5432
user=mypostgresuser
password=mypostgrespassword
private_username=myprivateusername
private_password=myprivatepassword
- Re-generate
ometascan_postgres.cat
andometascan_postgres.dat
Windows
- Open Command Prompt as Administrator
- Navigate to the MetaDefender Core’s installation folder.
- Run the following command:
ometascan-upgrade-db.exe
Linux
Export:
LD_LIBRARY_PATH=/usr/lib/ometascan:$LD_LIBRARY_PATH
Run the upgrade database tool using:
sudo /usr/sbin/ometascan-upgrade-db
Change the owner and set permissions for the newly generated ometascan_postgres.cat and ometascan_postgres.dat files:
sudo chown metascan:metascan /usr/lib/ometascan/ometascan_postgres.cat
sudo chown metascan:metascan /usr/lib/ometascan/ometascan_postgres.dat
sudo chmod 777 /usr/lib/ometascan/ometascan_postgres.cat
sudo chmod 777 /usr/lib/ometascan/ometascan_postgres.dat
- Start MetaDefender Core Service
Conclusion
Following these steps should resolve the issue of MetaDefender Core failing to connect to the database due to configuration files corruption. If the problems persist, please contact OPSWAT support for further assistance.