mysql - Rails 迁移创建表主键

标签 mysql optimization ruby-on-rails-3 migration

我正在编写一个迁移脚本来创建一个表,该表的主键列名为 guid 并且是一个 VARCHAR(25)。问题是我觉得我必须加倍努力才能一步到位地实现目标。

如果我运行:

create_table(:global_feeds, :primary_key => 'guid') do |t|
  t.string :guid, :limit => 25
  t.text :title
  t.text :subtitle

  ...

  t.timestamps
end

我得到一个表,其中有一个名为 guid 的主键,没有名为 id 的列(这是我想要的)。但是,问题是 guid 列是一个启用了自动递增的 INT(11)。所以我必须运行一个额外的命令:

change_column :global_feeds, :guid, :string, :limit => 25

基本上必须运行两个 SQL 命令才能获得我认为应该可以在一个命令中实现的功能,这似乎有点令人费解。

关于如何优化它有什么建议吗?

最佳答案

在 Rails 4 中你可以做到;

create_table :global_feeds, id: false do |t|
  t.string :guid, primary_key: true
 ...
end

关于mysql - Rails 迁移创建表主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4769725/

相关文章:

php - 在函数内通过 PDO 访问数据 - PHP

javascript - WebGL 为许多相同的对象计算 GPU 上的顶点?

java - 如何在不调用System.gc()的情况下优化内存;

ruby-on-rails - Rails 3.1通配符使缓存与查询字符串一起作用

ruby-on-rails - Rails3 嵌套属性在保存操作中使用父值

PHP,openId - 无法写入mysql

mysql - 通过命令行进行 Flyway 迁移不起作用

mysql - 在 MySQL 中查找重复记录

c++ - 根据这些字符串输入在句子中的位置对它们进行排序的更快方法是什么?

ruby - 如何在 Ruby/Rails 中节省 CPU 周期?