mysql - 迁移 Rails 基表,表名称包含 *

标签 mysql ruby-on-rails migration

我在模型中有一条名为“base_transaction_log.rb”的事件记录。

它的架构信息是:

# Table name: *_bank_transaction_logs
#
#  All bank transaction tables should have the same format.
#
#  id              :integer          not null, primary key
#  credit          :decimal(8, 2)
#  created_at      :datetime         not null
#  updated_at      :datetime         not null

我希望更改其中一列,即credit,以使用decimal(16,2)。

所以我创建了一个迁移文件并在更改函数中添加了这些行。

change_column :*_bank_transaction_logs, :credit, :decimal, :precision => 16, :scale => 2

这不起作用。

语法错误(rake 中止! SyntaxError:/Users/seokhoonlee/Desktop/db/migrate/20160607080159_increase_rest_decimal_ precision.rb:81:语法错误,意外的 tIDENTIFIER,期待关键字_end ...列:*_bank_transaction_logs、:借记、:小数、:精确...)

change_column :base_transaction_logs, :credit, :decimal, :precision => 16, :scale => 2

这也不起作用。

名称错误(Mysql2::Error:表“development.base_transaction_logs”不存在)

当数据库中的表是基表(?,我不知道有这样的术语存在)或者表名包含*时,如何迁移数据库中的表?

最佳答案

通配符的使用用于对 Active Record 进行子类化,但不受数据库支持(数据库中不存在它)。

因此,它无法在数据库中找到适当的表。

就我而言,我必须通过迁移包含bank_transaction_logs(例如ABC_bank_transaction_logs)的任何文件来处理*_bank_transaction_logs。

关于mysql - 迁移 Rails 基表,表名称包含 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674956/

相关文章:

docker - 如何在Docker中运行Phinx?

mysql - 在实时环境中从 MySQL 迁移到 SQL Server 的最佳方法

php mysql 控制帖子表单字段

php - 如何将数据从 PHP 插入到 MySQL DB

Php Mysql分页

mysql - Active Record 和迁移格式错误的日期

ruby-on-rails - Ruby on Rails - 访问 :has_many => :through association 中的数据

ruby-on-rails - 在我的 'production' 服务器上运行时, bundle 程序忽略 MySQL2 gem 的安装

android - 将 keystore 从 eclipse 导入到 android studio

mysql - 在 innodb 中禁用 MySQL 全文搜索停用词