如何在非rails应用程序中使用ActiveRecord创建新的MySQL数据库?
我正在构建一个使用ActiveRecord的非rails纯ruby应用程序。 我想写一个rake文件,为它创建一个数据库和表。 我尝试以下代码
namespace :db do task :create do conn = ActiveRecord::Base.connection create_db = "CREATE DATABASE foo_dev" conn.execute(create_db) end end
但这给了我
ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished
错误。 嗯,这很明显,因为我没有将ActiveRecord连接到任何数据库。
我该怎么办?
编辑:我想创建一个MySQL数据库。
建立一个连接,有些事情如下:
ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', :database => './your_db.db' )
对于sqlite,如果数据库(文件)不存在,则会创建它。 然后执行迁移以创建表。
基于上一个问题, ActiveRecord可以在迁移之外创建表吗?
感谢您的回答,但正如我在我的问题中编辑的那样,我忘了提到我想创建一个MySQL数据库。 我无法通过ActiveRecord创建MySQL数据库。 然后我在mysql2 gem的帮助下解决了这个问题。 这是我的解决方案:
client = Mysql2::Client.new(:host => 'localhost', :username=>"#{YOUR_MYSQL_USERNAME}", :password=> "#{YOUR_MYSQL_PASSWORD}") client.query("CREATE DATABASE company_db") client.query('USE company_db') client.query('CREATE TABLE employees ...') ...
这里’USE company_db’查询很重要,因为它告诉gem我们要在这个数据库上运行查询。