I received the following error while running my Rspec test suite:
PG::InternalError: ERROR: GetProj4StringSPI: Cannot find SRID (4326) in spatial_ref_sys
I know that I enabled the PostGIS extension. How do I fix this?
I received the following error while running my Rspec test suite:
PG::InternalError: ERROR: GetProj4StringSPI: Cannot find SRID (4326) in spatial_ref_sys
I know that I enabled the PostGIS extension. How do I fix this?
The problem is that something removed the rows from the spatial_ref_sys
table.
In my case, the problem was in my DatabaseCleaner
configuration in my spec_helper.rb
. It was configured to delete/truncate the table.
To prevent that behavior, change the configuration. For me, that was:
config.before(:suite) do
DatabaseCleaner.strategy = :deletion, {:except => %w[spatial_ref_sys]}
DatabaseCleaner.clean_with :truncation, {:except => %w[spatial_ref_sys]}
end
Now you'll need to regenerate the rows in that table. Use the script named spatial_ref_sys.sql
to do that.
I use Postgres.app, so the command to run that script was:
/Applications/Postgres.app/Contents/MacOS/bin/psql -d database_name -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql
Your command may be slightly different.
Running rake db:test:prepare
should restore the values in spatial_ref_sys
.
UPDATE: This is fixed in version 1.4.1: https://github.com/DatabaseCleaner/database_cleaner/pull/328
There is a bug in database_cleaner
version 1.4.0, so you need to specify the schema of the table exceptions:
DatabaseCleaner.strategy = :truncation, { except: ["public.spatial_ref_sys"] }
DatabaseCleaner.clean_with :truncation, { except: ["public.spatial_ref_sys"] }
In version 1.4.0, the schema is returned as part of the table name. See https://github.com/DatabaseCleaner/database_cleaner/pull/282
This is due to not having a spatial_ref_sys
table. Insert this table using the following:
psql -d country -f /usr/share/postgresql/9.3/contrib/postgis-2.1/spatial_ref_sys.
country
is the database name, and /usr/share/.../spatial_ref_sys.sql
is the path where my file is stored. This works for me.