问题:开发模式启动一切正常,同样代码和环境,生产模式启动后报这个错误:
ActionView::Template::Error (Mysql2::Error: Table 'ebmyth.blogs' doesn't exist: SHOW FULL FIELDS FROM blogs
):
这个表明明存在,rails c 里也都正常,开发环境也正常,唯独生产环境报这个错误 生产环境的 database 配置是从开发环境那里复制过去的,也没问题
都看过了没问题, | blog_sort | | city | | message | | message_receive | | message_send | | province | | schema_migrations | | session | | type | | user | | user_company | | user_info | +-------------------+ 21 rows in set (0.00 sec)
如果数据库真没这个表,开发环境早报错了
evelopment:
adapter: mysql2
encoding: utf8
pool: 20
reconnect: false
host: localhost
username: root
password:
database: ebmyth
test:
adapter: mysql2
encoding: utf8
pool: 20
reconnect: false
host: localhost
username: root
password:
database: ebmyth
production:
adapter: mysql2
encoding: utf8
pool: 20
reconnect: false
host: localhost
username: root
password:
database: ebmyth
配置文件
Ebmyth::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
# Defaults to nil and saved in location specified by config.assets.prefix
# config.assets.manifest = YOUR_PATH
# Specifies the header that your server uses for sending files
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
# config.force_ssl = true
# See everything in the log (default is :info)
# config.log_level = :debug
# Prepend all log lines with the following tags
# config.log_tags = [ :subdomain, :uuid ]
# Use a different logger for distributed setups
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
# Use a different cache store in production
# config.cache_store = :mem_cache_store
# Enable serving of images, stylesheets, and JavaScripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
# config.assets.precompile += %w( search.js )
# Disable delivery errors, bad email addresses will be ignored
# config.action_mailer.raise_delivery_errors = false
# Enable threaded mode
# config.threadsafe!
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation can not be found)
config.i18n.fallbacks = true
# Send deprecation notices to registered listeners
config.active_support.deprecation = :notify
# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
# config.active_record.auto_explain_threshold_in_seconds = 0.5
end
生产模式的配置文件
source 'http://ruby.taobao.org/'
gem 'rails', '3.2.12'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'haml', '~> 3.0'
gem 'mysql2', '~> 0.3.11'
gem 'execjs'
gem 'therubyracer'
gem 'carrierwave'
gem 'passenger'
gem 配置文件
你可以这样,把 devlopment.rb 里面的内容复制到 production.rb 里面去。看看还出不出错,如果不出错肯定是 production.rb 的配置问题。