Ruby on rails 如何添加Rails迁移以修复与数据库不兼容的架构

Ruby on rails 如何添加Rails迁移以修复与数据库不兼容的架构,ruby-on-rails,activerecord,sqlite,rails-activerecord,sqlite3-ruby,Ruby On Rails,Activerecord,Sqlite,Rails Activerecord,Sqlite3 Ruby,在我的Mac上,我的Rails项目使用的是具有64个字符索引名的SQLite3。我需要在Ubuntu环境中进行操作。但是,当我尝试运行rake db:setup时,我得到一个错误,即我的名为index的64个字符太长,SQLite3最多只支持62个字符作为索引名 所以我想我将创建一个迁移来缩短索引的名称。但是,当我再次运行rakedb:setup时,我得到的错误与新迁移尚未运行的错误相同 如何缩短索引名的长度?rake db:setup将从模式加载数据库结构,其中不包括缩短的索引名迁移。对此不确

在我的Mac上,我的Rails项目使用的是具有64个字符索引名的SQLite3。我需要在Ubuntu环境中进行操作。但是,当我尝试运行rake db:setup时,我得到一个错误,即我的名为index的64个字符太长,SQLite3最多只支持62个字符作为索引名

所以我想我将创建一个迁移来缩短索引的名称。但是,当我再次运行rakedb:setup时,我得到的错误与新迁移尚未运行的错误相同


如何缩短索引名的长度?

rake db:setup将从模式加载数据库结构,其中不包括缩短的索引名迁移。对此不确定,但您应该能够运行rake db:create,然后rake db:migrate来运行所有迁移,这些迁移应该为您提供所有空表并运行缩短的索引名迁移,然后rake db:seed(如果您有任何种子数据)。@japed创建将无法工作,因为rails无法创建名为indexIn的64个字符。在哪种情况下,您可以在创建表的迁移中设置索引名而不是作为单独的迁移,迁移不会运行。我知道改变旧的迁移是非常不被鼓励的,但是你正在建立一个新的数据库,对吗?所以他们没有跑。除非更改旧数据库的索引名以更改模式并运行rake db:schema,否则在新数据库上总是会遇到此问题