在localhost,postgresql问题上设置Rails项目

时间:2014-02-05 16:51:44

标签: ruby-on-rails ruby git postgresql ubuntu

只是尝试在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

任何出错的想法?非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

好的,我以某种方式解决了它。真的不知道诀窍是什么,但基本上,它涉及给“abc”用户提供超级用户权限,然后运行db:create,db:migrate,从我们的站点备份导入db文件并再次运行迁移。

答案 1 :(得分:0)

错误消息告诉您数据库中不存在这些表。您需要创建迁移(基本上只是rails可以为您生成的sql),然后运行rake db:migrate以在您的数据库上运行迁移。

您可以在the rails guide to migrations了解有关迁移的更多信息。