只是尝试在ubuntu上设置rails app来做一些低级开发工作,而不必经历困扰我们的主要开发人员的麻烦。但是在这个过程的最后,我运行rails s命令。我在localhost:3000上获得登陆页面,无需直接调用数据库即可浏览页面。但是,当我转到从db获取数据的任何页面时,它会出现以下错误:
ActiveRecord::StatementInvalid in WantsController#new
PG::Error: ERROR: relation "geometry_columns" does not exist
LINE 1: SELECT * FROM geometry_columns WHERE f_table_name='wants'
^
: SELECT * FROM geometry_columns WHERE f_table_name='wants'
现在,不知道我做错了什么。以下是我正在采取的步骤:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" >> /etc/apt/sources.list'
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.3-postgis pgadmin3 postgresql-contrib postgresql-server-dev-9.3
sudo -u postgres psql
postgres=# CREATE EXTENSION adminpack;
postgres=# CREATE EXTENSION postgis;
postgres=# \q
postgres=# CREATE USER abc WITH PASSWORD 'abc';
postgres=# CREATE DATABASE abc;
postgres=# CREATE DATABASE abc_development;
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U abc -d abc abc-20131217-09.pgdmp
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U abc -d abc_development abc_development-20131217-09.pgdmp
然后导航到克隆的git文件夹并执行bundle and rails s
这是database.yml:
development: &dev
# adapter: postgresql
database: abc_development
username: abc
password: abc
host: localhost
encoding: utf8
postgis_extension: true
schema_search_path: public,postgis
adapter: postgis
encoding: utf8
postgis_extension: postgis
production:
adapter: postgis
database: abc
username: abc
password: oTSZ1gQdwsFXWIUZsehj
host: localhost
encoding: utf8
postgis_extension: true
schema_search_path: public,postgis
postgis_extension: postgis
任何出错的想法?非常感谢帮助。
答案 0 :(得分:1)
好的,我以某种方式解决了它。真的不知道诀窍是什么,但基本上,它涉及给“abc”用户提供超级用户权限,然后运行db:create,db:migrate,从我们的站点备份导入db文件并再次运行迁移。
答案 1 :(得分:0)
错误消息告诉您数据库中不存在这些表。您需要创建迁移(基本上只是rails可以为您生成的sql),然后运行rake db:migrate
以在您的数据库上运行迁移。
您可以在the rails guide to migrations了解有关迁移的更多信息。