【问题标题】:Ruby MySQL Database Migration ScriptRuby MySQL 数据库迁移脚本
【发布时间】:2017-03-04 20:20:42
【问题描述】:

我对 ruby​​ 完全陌生,我想为 MySQL 数据库创建一个数据库迁移脚本。我浏览了在线资料,我必须创建一个应用程序才能创建迁移脚本。

我可以在单个文件中编写一个数据库迁移脚本来执行以下任务吗:

  1. 创建数据库
  2. 创建 2-3 个表
  3. 在这些表中植入一些数据

任何帮助或参考都会很棒

提前致谢

【问题讨论】:

  • 你为什么要写一个脚本来做这个?是否允许其他人(或您以后)将来重新创建数据库?
  • 是的,我可以使用脚本来做同样的事情,并进行一些高级修改,例如上下。
  • 看看github.com/thuss/standalone-migrations。有了这个 gem,你可以在不创建 Rails 项目的情况下使用 Rails 迁移。

标签: mysql ruby-on-rails ruby database database-migration


【解决方案1】:

你只能使用一个 gem mysql2 - https://stackoverflow.com/a/14435522/3102718

或带有 activerecordmysql2

这是迁移文件的示例:

create_database.rb

require 'mysql2'

client = Mysql2::Client.new(host: 'localhost', username: 'root')
client.query("CREATE DATABASE my_database")

require 'active_record'

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :name
      t.string :email
    end

    add_index :users, :email, unique: true
  end
end

class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table :posts do |t|
      t.references :user, index: true
      t.string :title
      t.text :body
    end
  end
end

ActiveRecord::Base.establish_connection(
  adapter: 'mysql2',
  encoding: 'utf8',
  host: 'localhost',
  database: 'my_database',
  username: 'root',
  socket: '/tmp/mysql.sock'
)

CreateUsers.up
CreatePosts.up

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end

user = User.create(email: "test@example.com", name: "User")
user.posts.create(title: "My Post", body: "Lorem ipsum")

使用$ ruby create_database.rb 运行它 (应该安装宝石mysql2activerecord)。

【讨论】:

  • 谢谢它的工作,只是为了其他人确保你为mysql套接字提供正确的路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 2012-11-16
  • 2016-08-22
相关资源
最近更新 更多