我在Rails应用程序中有一个包含数十万条记录的表,它们只有一个created_at时间戳.我正在添加编辑这些记录的功能,所以我想updated_at在表格中添加一个时间戳.在我的迁移中添加列,我想更新所有行以使新updated_at匹配旧created_at,因为这是Rails中新创建的行的默认值.我可以做一个find(:all)并遍历记录,但由于表的大小,这需要几个小时.我真正想做的是:
UPDATE table_name SET updated_at = created_at;
Run Code Online (Sandbox Code Playgroud)
在使用ActiveRecord而不是执行原始SQL的Rails迁移中有更好的方法吗?
我最初创建了一个带有列的表
t.string "email", :default => "", :null => false
Run Code Online (Sandbox Code Playgroud)
要求已更改,现在我需要允许电子邮件为空.如何编写迁移到make:null => true
我看到很多关于这个的问题,并试图解决这个问题,但经过一个小时的谷歌搜索和大量的试验和错误,我仍然无法解决它.我希望你们中的一些人能够解决问题.
这就是我得到的:
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835)
at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453)
at java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:392)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:191)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at java.util.Collections.sort(Collections.java:155)
...
Run Code Online (Sandbox Code Playgroud)
这是我的比较器:
@Override
public int compareTo(Object o) {
if(this == o){
return 0;
}
CollectionItem item = (CollectionItem) o;
Card card1 = CardCache.getInstance().getCard(cardId);
Card card2 = CardCache.getInstance().getCard(item.getCardId());
if (card1.getSet() < card2.getSet()) {
return -1;
} else {
if (card1.getSet() == card2.getSet()) {
if (card1.getRarity() < card2.getRarity()) {
return 1;
} else {
if (card1.getId() == card2.getId()) { …Run Code Online (Sandbox Code Playgroud) 我删除了数据库中的一个表,称之为X. db:migrate不再有效.我有一个名为CreateX的迁移文件.有没有办法只运行特定的迁移?
我已经浏览了许多SO和google帖子来生成has many and belongs to many关联的连接表的迁移,没有任何工作.
所有解决方案都生成一个空的迁移文件.
我正在使用rails 3.2.13,我有两张桌子:security_users和assignments.这些是我尝试过的一些事情:
rails generate migration assignments_security_users
rails generate migration create_assignments_security_users
rails generate migration create_assignments_security_users_join_table
rails g migration create_join_table :products, :categories (following the official documentation)
rails generate migration security_users_assignments security_user:belongs_to assignments:belongs_to
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉如何在两个表之间创建连接表迁移吗?
migration ruby-on-rails jointable ruby-on-rails-3 ruby-on-rails-4
我打算从CVS切换到Git.在SVN的情况下,似乎有cvs2svn.是否有类似的工具可以轻松地从CVS迁移到Git?
我有下面提到的专栏:
public function up()
{
Schema::create('stnk', function(Blueprint $table)
{
$table->increments('id');
$table->string('no_reg', 50)->unique();
$table->string('no_bpkb', 50)->unique();
$table->string('nama_pemilik', 100);
$table->string('alamat');
$table->string('merk', 50);
$table->string('tipe', 50);
$table->string('jenis', 50);
$table->smallInteger('tahun_pembuatan');
$table->smallInteger('tahun_registrasi');
$table->smallInteger('isi_silinder');
$table->string('no_rangka', 50);
$table->string('no_mesin', 50);
$table->string('warna', 50);
$table->string('bahan_bakar', 50);
$table->string('warna_tnkb', 50);
$table->string('kode_lokasi', 50);
$table->date('berlaku_sampai');
$table->timestamps();
$table->index('created_at');
$table->index('updated_at');
});
}
Run Code Online (Sandbox Code Playgroud)
我把播种机做成了桌子
现在我想重命名id为id_stnk.
我在"作曲家"中添加了一个"教义/ dbal "并做了一个composer update.
我做了迁移php artisan migration:make rename_column.
然后我为rename_column添加了新方法:
Schema::table('stnk', function(Blueprint $table)
{
$table->renameColumn('id', 'id_stnk');
});
Run Code Online (Sandbox Code Playgroud)
然后我试图运行命令php artisan migrate但是我收到的错误如下所述:
[Ulluminate\Database\QueryException] …Run Code Online (Sandbox Code Playgroud) 我不想在laravel 4上运行All Outstanding Migrations.我有5次迁移.现在我只想运行一次迁移.而不是做:php artisan migrate我想运行一个特定的迁移,如:php artisan migrate MY_MIGRATION_TO_RUN
标题是自我解释的.有没有办法直接进行这种导入?