在文件db/migrate夹中添加迁移文件并运行后rake db:migrate,我想回到上一步,我认为使用VERSION=n是正确的方法,但我不知道使用n的正确值.有没有命令检查当前的n值?
如果有人能提供有关如何使用的完整说明,那就太好了rake db:migrate.
该命令rake db:migrate将所有相关的新迁移应用于数据库,并在输出中列出已应用的迁移.
我想事先知道将应用哪些迁移,以便记下生产环境中预期的更改列表.
是否有一个我可以结合使用的选项rake db:migrate,它将告诉我在不实际应用的情况下将应用哪些更改?
我的版本的rails是4.0.0,我的mysql版本是Ver 14.14 Distrib 5.7.9,适用于Win64(x86_64).我正在运行一个旧版本的rails,因为我正在根据我之前的问题在这里与mysql发生冲突.(查看Kalelc批准的回答我的追索权)
跑步
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
== CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: All parts of a PRIMARY KEY must be NOT NULL; if you need NULL in a key, use UNIQUE instead: CREATE TABLE `users` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `first_name` varchar(25), `last_name` varchar(50), `email` varchar(255) DEFAULT '' NOT NULL, `password` varchar(40), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDBC:/Users/Lizanne/Documents/Code/Sites/simple_cms/db/migrate/20151116154434_create_users.rb:3:in `up'
C:in `migrate' …Run Code Online (Sandbox Code Playgroud) 我正在研究Hartl ruby on rails教程(第2.2节),我在迁移数据库时遇到了问题.一切似乎都在工作,然后我运行rails generate scaffold User name:string email:string Afterwards我试图运行bundle exec rake db:migrate并得到以下错误消息:
$ bundle exec rake db:migrate
== 20141125234257 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0079s
== 20141125234257 CreateUsers: migrated (0.0080s) =============================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
wrong number of arguments (1 for 0)/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/abstract_adapter.rb:271:in `initialize'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/abstract_adapter.rb:271:in `new'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/connection_adapters/abstract_adapter.rb:271:in `substitute_at'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/relation.rb:97:in `block in substitute_values'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/relation.rb:96:in `each'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/relation.rb:96:in `each_with_index'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/relation.rb:96:in `substitute_values'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/relation.rb:56:in `insert'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/persistence.rb:521:in `_create_record'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/counter_cache.rb:139:in `_create_record'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/attribute_methods/dirty.rb:122:in `_create_record'
/usr/local/rvm/gems/ruby-2.1.4@rails4/gems/activerecord-4.2.0.beta4/lib/active_record/callbacks.rb:306:in `block in …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的一个表中添加一个额外的字段.
我在迁移文件中添加了该字段(在db\migrate下),然后运行了'rake db:migrate',它运行没有麻烦.我的文本编辑器甚至告诉我我的schema.db文件已经更新,需要刷新.
模式文件不包含我的新字段,任何从我的视图引用该字段的尝试都会失败.
我该怎么做呢?可以通过rails更新带有额外字段的表,而不必完全删除并重新创建数据库吗?
我克隆了我的项目.捆绑"捆绑安装",然后运行"rake db:migrate".我收到此错误:(当我运行rails服务器并将我的浏览器打开到localhost:3000时)"迁移正在等待;运行'bin/rake db:migrate RAILS_ENV = development'以解决此问题."
我逐个检查了所有迁移,并且所有迁移都没有错误地执行.执行"rake db:migrate"后也没有显示错误.
这是我执行" rake db:migrate:status " 时看到的内容
我在开发环境.如果您需要任何其他信息,请与我们联系.
我也试过"捆绑exec rake db:migrate",并将"捆绑exec rake db:migrate:reset"改为"burninggramma"建议.
什么导致错误的线索?
我在自己的桌面上使用XAMPP软件包,将Window 7作为操作系统.
这意味着我正在使用MySQL DB和Apache服务器.
现在我想将我的整个MySQL数据库复制/迁移到我朋友的桌面,也就是使用Window作为操作系统,还使用XAMPP包.
我有什么方法可以做到这一点吗?
我在heroku上有一个rails应用程序,我无法运行我最新的数据库更改.跑步heroku run rake db:migrate给了我
Running `rake db:migrate` attached to terminal... up, run.3167
! Heroku client internal error.
! Search for help at: https://help.heroku.com
! Or report a bug at: https://github.com/heroku/heroku/issues/new
Error: Operation timed out - connect(2) (Errno::ETIMEDOUT)
Backtrace: /Users/gregg/.heroku/client/lib/heroku/client/rendezvous.rb:40:in `initialize'
/Users/gregg/.heroku/client/lib/heroku/client/rendezvous.rb:40:in `open'
/Users/gregg/.heroku/client/lib/heroku/client/rendezvous.rb:40:in `block in start'
/usr/local/heroku/ruby/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
/Users/gregg/.heroku/client/lib/heroku/client/rendezvous.rb:31:in `start'
/Users/gregg/.heroku/client/lib/heroku/command/run.rb:132:in `rendezvous_session'
/Users/gregg/.heroku/client/lib/heroku/command/run.rb:119:in `run_attached'
/Users/gregg/.heroku/client/lib/heroku/command/run.rb:24:in `index'
/Users/gregg/.heroku/client/lib/heroku/command.rb:218:in `run'
/Users/gregg/.heroku/client/lib/heroku/cli.rb:28:in `start'
/usr/bin/heroku:24:in `<main>'
Command: heroku run rake db:migrate
Version: heroku-toolbelt/3.2.1 (x86_64-darwin10.8.0) ruby/1.9.3
Run Code Online (Sandbox Code Playgroud)
当我拖尾日志时,我看到以下内容:
2014-01-04T20:27:56.438268+00:00 heroku[run.3167]: Awaiting client
2014-01-04T20:27:56.531495+00:00 heroku[run.3167]: …Run Code Online (Sandbox Code Playgroud) 有人知道为什么每当我rake db:migrate在生产环境中运行时,schema.rb文件都会被更改?
差异仅在所有模型表的created_at,update_at列上:
- t.datetime "created_at"
- t.datetime "updated_at"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
Run Code Online (Sandbox Code Playgroud)
我知道这是它在生产数据库中找到的,但为什么它们是在null: false那里创建的而不是在开发数据库中?
我在Ms-Sql中有以下查询
INSERT INTO tbl_web_price_update
Select bd_book_code,
Case
When pd.bpd_price is null then
cast((a.bd_price*c.ptm_price) as numeric(10))
else
cast((pd.bpd_price*c.ptm_price) as numeric(10))
end
As Price
from tbl_books_details a
inner join tbl_price_type_master c on a.bd_price_type = c.ptm_price_type_id
left join tbl_books_price_details pd on pd.bpd_book_code = a.bd_book_code
Where c.ptm_price_type_id = @price_type
SELECT distinct r.price, STUFF((SELECT distinct ','+ Cast(a.bd_book_code as varchar) FROM tbl_web_price_update a WHERE r.price = a.price FOR XML PATH(''), TYPE).value('.','VARCHAR(max)'), 1, 1, '') FROM tbl_web_price_update r
Run Code Online (Sandbox Code Playgroud)
我已经从ms-sql迁移到my-sql,我无法在Mysql中编写替代查询.请帮忙.