我正在尝试设置Postgres和Postgis在我的应用程序中执行一些简单的地理操作。我按照this post的指示行事。一切都很好,很快。但是,当我运行rake db:migrate
或rake test
时,我收到以下错误:
psql:/Users/jophde/Desktop/local/db/structure.sql:154: ERROR: rule "geometry_columns_delete" for relation "geometry_columns" already exists
psql:/Users/jophde/Desktop/local/db/structure.sql:161: ERROR: rule "geometry_columns_insert" for relation "geometry_columns" already exists
psql:/Users/jophde/Desktop/local/db/structure.sql:168: ERROR: rule "geometry_columns_update" for relation "geometry_columns" already exists
它们更像是警告,因为测试和迁移工作正常。但是,每次测试时打印出来都很烦人。我正在使用config.active_record.schema_format = :sql
。以下是structure.sql
CREATE RULE geometry_columns_delete AS ON DELETE TO geometry_columns DO INSTEAD NOTHING;
CREATE RULE geometry_columns_insert AS ON INSERT TO geometry_columns DO INSTEAD NOTHING;
CREATE RULE geometry_columns_update AS ON UPDATE TO geometry_columns DO INSTEAD NOTHING;
我的数据库配置如下:
development:
adapter: postgresql
database: local_development
host: localhost
test:
adapter: postgresql
database: local_test
host: localhost
我用来启用PostGis的迁移是:
class EnablePostgis < ActiveRecord::Migration
def change
enable_extension :postgis
end
end
class AddPointIndexToMarkets < ActiveRecord::Migration
def up
execute %{
create index index_on_markets_location ON markets using gist (
ST_GeographyFromText(
'SRID=4326;POINT(' || markets.longitude || ' ' || markets.latitude || ')'
)
)
}
end
def down
execute %{ drop index index_on_markets_location }
end
end
我在Mac OSX 10.8.4(Mountain Lion)上使用Postgres.app版本9.3.0.0(16)(最新版)
答案 0 :(得分:1)
尝试ActiveRecord::Schema.verbose = false
答案 1 :(得分:1)
添加
min_messages: fatal
到development
和test
config/database.yml
就行了。
development:
adapter: postgresql
database: local_development
host: localhost
min_messages: fatal
test:
adapter: postgresql
database: local_development
host: localhost
min_messages: fatal