Tag: 迁移

运行迁移时出现重复的列名错误

每当我在我的Rails应用程序中运行迁移时,我都会从SQLite3收到错误: SQLite3::SQLException: duplicate column name: photo_file_name: ALTER TABLE “users” ADD “photo_file_name” varchar(255) 我已经有一个“向用户添加照片”迁移。 这里是: class AddAttachmentPhotoToUsers < ActiveRecord::Migration def self.up change_table :users do |t| t.has_attached_file :photo end end def self.down drop_attached_file :users, :photo end end 这是用户迁移: class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.string :name t.string :title t.string :department t.text :skills t.boolean […]

如何使用开发数据填充生产数据库(heroku)? (导轨)

heroku run rake db:migrate可以正常工作来改变生产数据库的结构: Migrating to CreateUsers (20120318090252) Migrating to AddIndexToUsersEmail (20120319191315) Migrating to AddPasswordDigestToUsers (20120319194632) Migrating to AddRememberTokenToUsers (20120323142854) 但是条目 ,我添加到本地开发数据库的数据还没有上传到heroku生产数据库。 这是正常的,还是有办法让两个数据库匹配? 提前致谢。

rake db:migrate究竟是什么做的?

rake db:migrate是否仅添加新迁移,还是删除所有迁移/更改并构建新内容? 我认为rake会抛出错误,因为它试图访问迁移040中删除的迁移040中的表属性。不知怎的,我的DB和rake不同步,我想修复它们。 对于那里的专家 – rake与迁移不同步是否常见? 我怎么能避免这种情况(不,我不会手工编辑我的架构或rake文件)。

如何将表列转换为另一种数据类型

我的Postgres数据库中有一个Varchar类型的列,我想要整数…现在我想要更改它们,不幸的是,这似乎不能使用我的rails迁移。 change_column :table1, :columnB, :integer 这似乎输出这个SQL: ALTER TABLE table1 ALTER COLUMN columnB TYPE integer 所以我试着这样做: execute ‘ALTER TABLE table1 ALTER COLUMN columnB TYPE integer USING CAST(columnB AS INTEGER)’ 但是在这个实例中,强制转换不起作用,因为某些列为空… 有任何想法吗? 错误: PGError: ERROR: invalid input syntax for integer: “” : ALTER TABLE table1 ALTER COLUMN columnB TYPE integer USING CAST(columnB AS INTEGER) Postgres v8.3

为什么Rails db:migrate在Rails中没有向模式文件中添加函数?

我最近通过迁移向我的数据库添加了一些SQL函数,它们工作得很好。 代码工作,数据库工作,测试没有。 schema.rb文件告诉我它是最新版本(并且它是正确的),但它只包含表和索引的定义,而不是我添加的函数。 我在迁移中通过“execute()”方法添加了这些函数,并且需要在测试数据库中将它们传递给RSpec测试(公司策略规定在修复之前我不能提交此更改)。 有谁知道为什么会这样,或者如何解决它? 我可以手动进入MySQL命令行并添加函数,但是下次有人执行db:test:prepare时它们会被删除。 我需要一个可以自动化的解决方案。 感谢您的帮助和回复, -Mike Trpcic

Rails:在早期开发阶段改变迁移

在Rails应用程序的早期开发阶段,我更喜欢直接修改迁移文件以向表(模型)添加新列(字段),而不是堆积迁移以更改字段和/或进行微小更改。 这可能在Rails中吗?

是否可以选择生成脚手架而不生成迁移?

在Rails中困扰我的一件事是脚手架产生了我并不总是需要的迁移。 有没有办法在没有相应迁移的情况下生成脚手架?

如何为旧数据库创建迁移?

我目前正在使用在我意识到Rails存在之前设计的数据库开发Rails应用程序。 我目前已经创建了一些迁移,以向现有表添加一些新表和新列。 我想让迁移重新创建完整的数据库。 我应该遵循哪些步骤? 我应该手动创建所有迁移吗? 编辑:我感兴趣的是不在数据库内容中的数据库模式

如何在rails中追溯将主键添加到我的表中?

我创建了一个没有主键的表(:id => false),但现在又回来咬我的屁股了。 我的应用程序已经投入生产,我不能只删除它并重新创建另一个。 有没有办法运行迁移以向我的表添加另一个自动增量主键列?

从git存储库中删除重复的数据库迁移

我正在尝试将一个rails应用程序部署到Heroku,我遇到了一些基本的git问题。 我对这一切都很陌生 – rails,git,heroku – 所以我担心我迷失在可能是一个相当基本的概念上。 我已经将应用程序推送到Heroku,但是当我迁移数据库($ heroku rake db:migrate)时,我不断收到以下错误: rake aborted! Multiple migrations have the name CreateFavorites 检查我的github存储库,果然,有两个迁移: 20101007030431_create_favorites.rb 20101012173735_create_favorites.rb 第一个文件 – 20101007030431_create_favorites.rb – 在我的本地应用程序中不存在,但在我提交后它仍然在github存储库中。 如何删除此文件并使我的存储库和本地应用程序同步? 提前致谢。