我之前看到过这个问题,但仅限于rspec.我还没有进行测试,因为它对我来说太进步了,但有一天我会尽快!:P
当我尝试使用我的应用注册/登录时出现此错误.我不知道在哪里修理它.我使用devise来创建我的用户,并使用omniauth2来登录谷歌.
这是错误
ActiveRecord::StatementInvalid at /users/auth/google_oauth2/callback
PG::UndefinedTable: ERROR: relation "users" does not exist
LINE 5: WHERE a.attrelid = '"users"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Run Code Online (Sandbox Code Playgroud)
我试过rake db:migrate,但它已经创建,在架构表中存在用户.有没有人以前得到这个错误?
database.yml的
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
# …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多像这样的底池,但我看到的所有解决方案都在模型,命名和Rails惯例的命名中.
现在,当我在PostgreSQL 9.1中的生产环境中第一次运行时,我遇到了这个问题
rake db:migrate RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
要么
rake db:schema:load RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地创建数据库:rake db:create RAILS_ENV=production=>好的
错误是
rake aborted!
PG::UndefinedTable: ERROR: relation "categories" does not exist
LINE 5: WHERE a.attrelid = '"categories"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"categories"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Run Code Online (Sandbox Code Playgroud)
这些模型遵循所有Rails命名约定.所以,我不知道这个错误告诉我 什么?还有其他什么可以导致这个错误?
型号:
class Category …Run Code Online (Sandbox Code Playgroud) 我已经阅读了所有续集的文档,但我找不到创建数据库的方法,假设我能做到这一点.
我正在运行一个rake任务:
require 'rubygems'
require 'bundler/setup'
require 'pg'
require 'sequel'
require 'yaml'
require 'erb'
namespace :db do
task :connect do
end
task :create => :connect do
puts db_config
Sequel.connect(db_config['production']){ |db|
db.create_table :user do
primary_key :id
String :name
String :email
end
user = db[:user]
user.insert(:name => 'Roland', :email => 'rolandjitsu@gmail.com')
}
end
task :drop => :connect do
end
end
def db_config
YAML.load(ERB.new(File.read('config/database.yml')).result)
end
Run Code Online (Sandbox Code Playgroud)
但显然如果数据库不存在则不会创建数据库,所以我有点不确定我能做些什么.当我运行任务时,我得到:
PG::ConnectionBad: FATAL: database "pulsr" does not exist
Run Code Online (Sandbox Code Playgroud)
和database.yml文件:
production: &production
adapter: postgres
host: …Run Code Online (Sandbox Code Playgroud) 我在使用Rails,postgres travis工作时遇到了麻烦.测试开始运行时不断收到数据库连接错误.
Errno::ECONNREFUSED: Connection refused - connect(2)
.travis.yml
language: ruby
rvm:
- "1.9.3"
before_script:
- cp config/database.travis.yml config/database.yml
- psql -c 'create database myapp_test;' -U postgres
- bundle exec rake db:migrate --trace
- bundle exec rake db:test:prepare --trace
script:
- RAILS_ENV=test bundle exec rake spec
gemfile: Gemfile.ci
Run Code Online (Sandbox Code Playgroud)
和 database.travis.yml
test:
adapter: postgresql
database: myapp_test
username: postgres
Run Code Online (Sandbox Code Playgroud)
我必须使用单独的数据库配置.
我有什么问题吗?几乎完全在http://about.travis-ci.org/docs/user/database-setup/上的文档之后,我必须将数据库配置复制到正确的位置.