Capistrano SQLite3::SQLException:没有这样的 table:用户
Capistrano SQLite3::SQLException: no such table: users
Ubuntu16,ruby,3.2,框架Sinatra。
cap 部署后未 运行ning 生产迁移。
我使用命令 cap deploy production
将我的项目部署到远程服务器。
在 app.rb 数据库的连接设置中:
#app.rb
require "sinatra"
require "pry"
require "sinatra/activerecord"
require 'sinatra/flash'
require 'sinatra/base'
require "./models/user"
require "./models/game_counter"
require "./models/stash"
require "json"
require "pony"
require 'logger'
enable :static
enable :sessions
set :public_folder, File.dirname(__FILE__) + '/assets'
set :database, { adapter: "sqlite3", database: "sudoku_database.sqlite3" }
Gemfile
gem "rake"
gem "heroku"
gem "sinatra"
gem "sinatra-activerecord"
gem "sinatra-flash"
gem "sqlite3"
gem "pg"
gem "bcrypt"
gem "pry"
gem "pony"
gem "capistrano", '~> 3.1.0'
gem "capistrano-bundler", '~> 1.1.2'
gem 'passenger'
我在远程服务器上安装了 sqllite。
安装并定制了 capistrano。
config/deploy.rb
lock '3.4.0'
set :application, 'projectname'
set :repo_url, 'git@github.com:user/projectname.git'
set :deploy_to, '/home/deploy/projectname'
set :linked_dirs, %w{ log }
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute :touch, release_path.join('tmp/restart.txt')
end
end
after :publishing, 'deploy:restart'
after :finishing, 'deploy:cleanup'
end
config/production.rb
set :stage, :production
server '188.177.76.190', user: 'deploy', roles: %w{web app db}, port: 2503
当我运行网站在浏览器中,在日志中nginx显示错误:
2016-12-13 10:40:58 - ActiveRecord::StatementInvalid - SQLite3::SQLException: no such table: users: SELECT "users".* FROM "user
请帮助我,无法理解为什么不 运行 宁迁移生产数据库以及我如何解决这个问题?
转到您的实时应用程序并在生产环境中迁移服务器上的数据库。
rake db:migrate RAILS_ENV=production
没有用于迁移的 capistrano 任务。您应该将其添加到部署配置中。像这样(这取决于你的配置):
task :migrate do
on roles(:app) do
within release_path do
with rack_env: fetch(:rack_env) do
execute :rake, "db:migrate"
end
end
end
end
after 'deploy', 'migrate'
Ubuntu16,ruby,3.2,框架Sinatra。
cap 部署后未 运行ning 生产迁移。
我使用命令 cap deploy production
将我的项目部署到远程服务器。
在 app.rb 数据库的连接设置中:
#app.rb
require "sinatra"
require "pry"
require "sinatra/activerecord"
require 'sinatra/flash'
require 'sinatra/base'
require "./models/user"
require "./models/game_counter"
require "./models/stash"
require "json"
require "pony"
require 'logger'
enable :static
enable :sessions
set :public_folder, File.dirname(__FILE__) + '/assets'
set :database, { adapter: "sqlite3", database: "sudoku_database.sqlite3" }
Gemfile
gem "rake"
gem "heroku"
gem "sinatra"
gem "sinatra-activerecord"
gem "sinatra-flash"
gem "sqlite3"
gem "pg"
gem "bcrypt"
gem "pry"
gem "pony"
gem "capistrano", '~> 3.1.0'
gem "capistrano-bundler", '~> 1.1.2'
gem 'passenger'
我在远程服务器上安装了 sqllite。
安装并定制了 capistrano。
config/deploy.rb
lock '3.4.0'
set :application, 'projectname'
set :repo_url, 'git@github.com:user/projectname.git'
set :deploy_to, '/home/deploy/projectname'
set :linked_dirs, %w{ log }
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute :touch, release_path.join('tmp/restart.txt')
end
end
after :publishing, 'deploy:restart'
after :finishing, 'deploy:cleanup'
end
config/production.rb
set :stage, :production
server '188.177.76.190', user: 'deploy', roles: %w{web app db}, port: 2503
当我运行网站在浏览器中,在日志中nginx显示错误:
2016-12-13 10:40:58 - ActiveRecord::StatementInvalid - SQLite3::SQLException: no such table: users: SELECT "users".* FROM "user
请帮助我,无法理解为什么不 运行 宁迁移生产数据库以及我如何解决这个问题?
转到您的实时应用程序并在生产环境中迁移服务器上的数据库。
rake db:migrate RAILS_ENV=production
没有用于迁移的 capistrano 任务。您应该将其添加到部署配置中。像这样(这取决于你的配置):
task :migrate do
on roles(:app) do
within release_path do
with rack_env: fetch(:rack_env) do
execute :rake, "db:migrate"
end
end
end
end
after 'deploy', 'migrate'