2012-05-05 3 views
1

mysqlデータベースに接続してテーブルを作成するrubyスクリプトを書きました(このテーブルがまだ存在しない場合)。この後のスクリプトは私が使用してこのデータを保存しようと、このテーブルにコンテンツを格納する必要がありますmysqlの行/列を作成

Table.create(:foo => "bar", :foobar => "something", :blallala => "blololl") 

私も

Table.new(:foo => "bar", :foobar => "something", :blallala => "blololl") 

を試してみましたが、私は常にエラーが出るので、同じことを行うようだ。

Mysql::Error: Table 'my-username.my-dbname' doesn't exist: SHOW FULL FIELDS FROM table-name

SOこれは私がこれまでに得たものである:

ActiveRecord::Base.establish_connection(
       :adapter => "mysql", 
       :host => "localhost", 
       :username => "my-username", 
       :password => "my-password", 
       :database => "my-db-name", 
       :encoding => "UTF8" 
     ) 

     table_name = "my_table" 
     unless ActiveRecord::Base.connection.tables.include? table_name 
       ActiveRecord::Schema.define do 
         create_table :"#{table_name}" do |table| 
           table.column :foo, :string 
           table.column :bar, :string 
           table.column :blallala, :string 
         end 
       end 
     end 

     class Table < ActiveRecord::Base 
       self.table_name = "#{table_name}" 
     end 

     Table.create(:foo => "bar", :foobar => "something", :blallala => "blololl") 
     #Table.new(:foo => "bar", :foobar => "something", :blallala => "blololl") 

質問:私は実際にcolumo/rowを実際に作成する方法と、なぜTable.create(:foo => "bar", :foobar => "something", :blallala => "blololl")が機能しないのですか?

+0

だから、質問はここで何ですか? –

+0

質問:私は実際にcolumo/rowをどのように作成し、なぜ 'Table.create(:foo =>" bar "、:foobar =>" something "、:blallala =>" blololl ")' not not work? –

+0

テーブルを作成すると同時にテーブルにデータを挿入することはできません。それは2つの別個のステートメントでなければならない。最初の2つのサンプルがうまくいきません。 –

答えて

1

これが私の仕事:

# establish connection here 

class Table < ActiveRecord::Base 
    self.table_name = "the_table" 
end 

unless Table.table_exists? 
    ActiveRecord::Schema.define do 
    create_table :the_table do |table| 
     table.column :foo, :string 
     table.column :bar, :string 
     table.column :blallala, :string 
    end 
    end 
end 


Table.create(:foo => "bar", :bar => "something", :blallala => "blololl") 
+0

は試して受け入れます;) –

+0

私はテーブルに名前を付けませんでした... :( –

+0

あなたのコードをデバッグしてください。これは私のマシンで働いていました... –

関連する問題