[英]how do I create a database with sequel
我已經閱讀了所有續集的文檔,但我找不到創建數據庫的方法,假設我能做到這一點。
我正在運行一個rake任務:
require 'rubygems'
require 'bundler/setup'
require 'pg'
require 'sequel'
require 'yaml'
require 'erb'
namespace :db do
task :connect do
end
task :create => :connect do
puts db_config
Sequel.connect(db_config['production']){ |db|
db.create_table :user do
primary_key :id
String :name
String :email
end
user = db[:user]
user.insert(:name => 'Roland', :email => 'rolandjitsu@gmail.com')
}
end
task :drop => :connect do
end
end
def db_config
YAML.load(ERB.new(File.read('config/database.yml')).result)
end
但顯然如果數據庫不存在則不會創建數據庫,所以我有點不確定我能做些什么。 當我運行任務時,我得到:
PG::ConnectionBad: FATAL: database "pulsr" does not exist
和database.yml
文件:
production: &production
adapter: postgres
host: localhost
encoding: unicode
database: pulsr
username:
password:
development:
<<: *production
有誰知道我可以做什么來創建數據庫? 這是啟動postgresql服務器的手動過程嗎?
您可以使用CREATE DATABASE命令創建數據庫 。
使用postgresql時,要創建數據庫,首先以具有正確priveliges的用戶身份連接到template1數據庫,然后發出CREATE DATABASE命令。
如果您具有shell訪問權限,則可以使用方便的createdb shell命令。
您可以使用Sequel執行此操作,而無需使用命令行工具,這些工具在您使用腳本的每個系統上都可能無法使用。
通常,您將指定'postgres'數據庫以滿足'database'參數要求。
production = db_config['production']
Sequel.connect(production.merge('database' => 'postgres')) do |db|
db.execute "DROP DATABASE IF EXISTS #{production['database']}"
db.execute "CREATE DATABASE #{production['database']}"
end
Sequel.connect(production) do |db|
# ...
end
這也是ActiveRecord如何做到的。
是的,這是一個手動過程。 數據庫是續集應該連接的配置的一部分,因此它必須在續集開始之前存在。
echo“create database REMOTE_TESTS”| mysql -u root
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.