1

我是 Rails 的新手,所以记录 ID 可能不会在销毁时更新。

我使用 rails 脚手架为产品页面生成 MVC。当我通过我的产品/新页面向我的数据库添加一个条目时,它会向该条目添加一个 ID 号。在浏览器中,如果我滚动索引视图上的显示/编辑/销毁链接,它会给我一个 localhost:3000/products/1 的 url 链接。现在,如果我使用破坏链接删除条目,它会正确删除条目,但是现在当我添加另一个条目时,它显示 id 为 2 而不是 1。为什么它从数据库中删除条目但没有将 id 重置回 1 .

这是用于 Rails 应用程序 sqlite3 中的内置服务器。

4

3 回答 3

4

Sqlite 使用一个序列来确定下一个用于主 ID 的可用整数。即使您用最新的记录破坏了序列,序列也不会“返回”。他们不断增加。有些数据库一旦达到最大值就会从零重新启动,有些会出错。

一些数据库将序列与表联系起来。但是在某些情况下,序列是它们自己的东西。您可以(如果您愿意)使用序列来获取多个不同表的唯一 ID。

查看 sqlite 的文档以获取详细信息...

于 2012-12-07T23:53:50.450 回答
1

该命令rake db:schema:dump将当前环境的模式转储到 db/schema.rb。要将其重置或全部删除并再次迁移,您应该使用rake db:setup运行命令rake db:schema:loadrake db:seed.

其他一些重要的命令是;

rake db:schema:load此命令将模式加载到当前环境的数据库中。

rake db:schema:dump此命令将当前环境的模式转储到db/schema.rb.

rake db:setup此命令运行rake db:schema:load并且rake db:seed.

rake db:reset此命令运行rake db:drop并且rake db:setup.

rake db:migrate:reset此命令运行rake db:drop然后.rake db:createrake db:migrate

于 2015-11-30T09:04:19.703 回答
0

你必须 rake db:drop 你的数据库(删除它)然后 rake db:migrate 再次创建你的表。

于 2012-12-08T03:53:07.880 回答