我正在使用rails 2.3.4
当我执行rake db:test:prepare时,创建的id字段不是主键并自动递增。
当我查看开发db时,主键没有问题。
使用MySQL。
编辑:看起来我的schema.rb文件已更改:id =>假应该是真的。什么生成此文件?数据库迁移?
[编辑]生成schema.rb文件的实际机制是什么?
答案 0 :(得分:1)
嘿,我昨天看了这个问题,看到没有人回答,所以我会尽力帮助,说实话我不知道为什么会发生这种情况,主要是因为我没有真正使用'准备'任务。在针对空数据库运行迁移时,会创建schema.rb。
我通常运行db:test:clone,只要对该方案进行了更改,这可以确保您的测试数据库始终与您当前的环境保持一致。也许尝试删除数据库并从迁移中重新创建它,然后运行克隆。在此之后,架构仍显示:id =>假?如果是这样,您可以发布正在创建相关表格的迁移。
答案 1 :(得分:1)
执行rake任务时,如果未指定环境,则会将任务执行到默认环境。
您的测试和开发数据库之间可能有不同的架构版本。
rake db:reset #drops and created the database for current environment
rake db:reset:all #drops and creates database for all environments
rake db:migrate #migrates the schema for the current environment
rake db:migrate RAILS_ENV=test #migrates the schema for the test environment
如果我没错(正如我现在记得的那样)
rake db:migrate #applies the migrations and dumps the schema to db/schema.rb file
rake db:schema:dump #dumps the actual state of your current environment schema into db/schema.rb file
答案 2 :(得分:1)
如果你使用'reset'然后'db:test:prepare'你可能会得到你期待的结果。 像这样:
rake db:reset
rake db:test:prepare
这将: