Uygulamam, belirli bir sınıfı veritabanına kaydetmeye çalıştığımda hata atmaya başladı. Bunun tam olarak başlamasının tam olarak ne olduğundan emin değilim - Son birkaç gündür her türlü veritabanı sorununu yaşıyorum ....Raylar 3.2 Postgres Kaydetme Hatası "ActiveRecord :: StatementInvalid: PG :: Hata: HATA: 5 konumunda" T "yakınında sözdizimi hatası"
Her halükarda, benim modelim gayet iyi çalışıyor gibi görünüyor. tüm before_save değerlerini düzgün şekilde hesaplar), ancak sonra veritabanına kaydetmeye çalışır ve patlar. Bu hata araçlarının (veya bu 'T' ne .....), hatta bunu giderme başlamak için hiçbir fikrim yok
ActiveRecord::StatementInvalid: PG::Error: ERROR: Syntax error near 'T' at position 5
..:
SQL (0.8ms) INSERT INTO "portfolios" ("correlation_matrix", "created_at", "data", "mean_return", "std_dev", "updated_at", "weights") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id" [["correlation_matrix", "--- \n- - 1.0\n - -0.4873114574375062\n- - -0.4873114574375062\n - 1.0\n"], ["created_at", Sat, 16 Jun 2012 15:12:35 MDT -06:00], ["data", {"TSX"=>0.5, "VUSTX"=>0.5}], ["mean_return", #<BigDecimal:7fadb119b750,'0.488052381E-1',18(45)>], ["std_dev", #<BigDecimal:7fadb119b598,'0.7668705159 123244E-1',18(45)>], ["updated_at", Sat, 16 Jun 2012 15:12:35 MDT -06:00], ["weights", "--- \nTSX: 0.5\nVUSTX: 0.5\n"]]
bu hatayı Atar .. Herhangi bir yardım takdir edilecektir.
Bunu anlamaya için gerekli ne olursa olsun bilgi gönderebilir
....
İlgili göç:
create_table :portfolios do |t|
t.text :weights
t.decimal :mean_return, :precision => 15, :scale => 10
t.decimal :std_dev, :precision => 15, :scale => 10
t.text :correlation_matrix
t.hstore :data
t.timestamps
end
execute "CREATE INDEX portfolios_gin_data_hstore ON portfolios USING GIN(data);"
Tam yığın takibi:
ActiveRecord::StatementInvalid: PG::Error: ERROR: Syntax error near 'T' at position 5
: INSERT INTO "portfolios" ("correlation_matrix", "created_at", "data", "mean_return", "std_dev", "updated_at", "weights") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/postgresql_adapter.rb:1164:in `get_last_result'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/postgresql_adapter.rb:1164:in `exec_cache'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/postgresql_adapter.rb:665:in `block in exec_query'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in log'
from /Users/brandon/.rvm/gems/[email protected]/gems/activesupport-3.2.6/lib/active_support/notifications/instrumenter. rb:20:in `instrument'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/postgresql_adapter.rb:663:in `exec_query'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/abstract/database_statements.rb:63:in `exec_insert'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/abstract/database_statements.rb:90:in `insert'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/relation.rb:66:in `insert'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/persistence.rb:363:in `create'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/timestamp.rb:57:in `create'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/callbacks.rb:268:in `block in create'
from /Users/brandon/.rvm/gems/[email protected]/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:403:in `_run__772785567275930853__create__1186465801021498362__callbacks'
from /Users/brandon/.rvm/gems/[email protected]/gems/activesupport-3.2.6/lib/active_support/callbacks.rb:405:in `__run_callback'
... 11 levels...
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/validations.rb:50:in `save'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/attribute_methods/dirty.rb:22:in `save'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/transactions.rb:241:in `block (2 levels) in save'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2. 6/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/transactions.rb:208:in `transaction'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/transactions.rb:241:in `block in save'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/transactions.rb:252:in `rollback_active_record_state!'
from /Users/brandon/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/transactions.rb:240:in `save'
from (irb):33
from /Users/brandon/.rvm/gems/[email protected]/gems/railties-3.2.6/lib/rails/commands/console.rb:47:in `start'
from /Users/brandon/.rvm/gems/[email protected]/gems/railties-3.2.6/lib/rails/commands/console.rb:8:in `start'
from /Users/brandon/.rvm/gems/[email protected]/gems/railties-3.2.6/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
GÜNCELLEME 1 İstenen bazı model kodları.
makro şeyler: Ben HStore sütununda Gerçekten için HStore kullanan tüm ilgisi bulabilirsiniz
attr_accessible :weights
serialize :correlation_matrix
serialize :weights
has_and_belongs_to_many :securities, :uniq => true
has_and_belongs_to_many :efficient_frontiers
before_validation :format_weights_tickers, :add_securities, :validate_weights, :set_weights_in_hstore, :build_correlation_matrix, :set_mean_return, :set_standard_deviation
validates_presence_of :mean_return, :std_dev, :securities, :correlation_matrix, :weights
validates_numericality_of :mean_return, :std_dev
validate :uniqueness_of_weights
before_destroy :check_for_dependent
scope :by_std_dev, :order => 'std_dev ASC'
şey ve her şey belirli Şeritler bir arama içindir. Bu işe yarardı ... Ne değiştiğini bilmiyorum. Postgres'i (homebrew ile uğraşıyordum) veya potansiyel olarak raylarla değiştirilmiş bir şeyi değiştirmiş olabilirim. 3.2.3'e geri dönmeyi denedim ama aynı hatayı aldım. Bu çok tutarsız ise
def self.find_by_hstore(search_key, search_value)
where("data @> (:key => :value)", :key => search_key.to_s, :value => search_value.to_s)
end
def set_weights_in_hstore
self.data = {} if self.data.nil?
weights.each_pair {|ticker, weight| self.data[ticker.to_s] = weight}
end
Ben modelin tamamını gönderebilir. Bilmeme izin ver! Ben
SQL (10.9ms) INSERT INTO "users" ("admin", "confirmation_sent_at", "confirmation_token", "confirmed_at", "created_at", "current_sign_in_at", "current_sign_in_ip", "data", "email", "encrypted_password", "last_email_at", "last_sign_in_at", "last_sign_in_ip", "name", "plan", "remember_created_at", "reset_password_sent_at", "reset_password_token", "selected_portfolio_id", "sign_in_count", "unconfirmed_email", "updated_at", "verified") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23) RETURNING "id" [["admin", false], ["confirmation_sent_at", Sat, 16 Jun 2012 20:37:07 MDT -06:00], ["confirmation_token", "7Xu15pMrV9zTNmofv8bD"], ["confirmed_at", nil], ["created_at", Sat, 16 Jun 2012 20:37:07 MDT -06:00], ["current_sign_in_at", nil], ["current_sign_in_ip", nil], ["data", {"min_rebalance_spacing"=>90 days, "max_contact_frequency"=>7 days, "allowable_drift"=>5}], ["email", "joe[email protected]"], ["encrypted_password", "$2a$10$HNUmlYmcVXbBsyZRFCAB7e8c5mf6S9UOdWr/ZCz10y5Sg4gOh8Zvq"], ["last_email_at", Sat, 16 Jun 2012 20:37:07 MDT -06:00], ["last_sign_in_at", nil], ["last_sign_in_ip", nil], ["name", "Joe Blow"], ["plan", "basic"], ["remember_created_at", nil], ["reset_password_sent_at", nil], ["reset_password_token", nil], ["selected_portfolio_id", nil], ["sign_in_count", 0], ["unconfirmed_email", nil], ["updated_at", Sat, 16 Jun 2012 20:37:07 MDT -06:00], ["verified", false]]
20:37:07 log.1 | [ef4a7d55fb30e8fb82ac6c860e674bfc] [127.0.0.1] PG::Error: ERROR: Syntax error near 'm' at position 5
20:37:07 log.1 | : INSERT INTO "users" ("admin", "confirmation_sent_at", "confirmation_token", "confirmed_at", "created_at", "current_sign_in_at", "current_sign_in_ip", "data", "email", "encrypted_password", "last_email_at", "last_sign_in_at", "last_sign_in_ip", "name", "plan", "remember_created_at", "reset_password_sent_at", "reset_password_token", "selected_portfolio_id", "sign_in_count", "unconfirmed_email", "updated_at", "verified") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23) RETURNING "id"
udpate .... basit bir kullanıcı kayıt sonrasında
.... başka yerlerde de benzer hatalar alıyorum 3
Orada -
GÜNCELLEME 2.
Benim veritabanı/kullanıcı tablosu ile devam eden bir şey gibi görünüyor. Çevre geçişi yükleme sırasında aşağıdaki hatayı alıyorum:
I "TSX" de "T" olduğunu tahmin ediyorum. Model sınıfınız neye benziyor? –
Oldukça büyük ... tam olarak ne yazacağından emin değilim. Sorunun ne olabileceğine dair bir fikrin var mı? Sonra ilgili bazı kodları gönderebilirim .... TSX bitleri her zaman dizgelerde ortaya çıkıyor, bu yüzden sorun ne olabilir? HStore ile bir şey mi? – Brandon
Alerjik olarak, "[" std_dev ", #] ile sorun yaşıyor mu? # 5 .... konumunda olan budur, ancak bu ondalık veritabanı sütununda sadece düz bir jane numarasıdır ... Arg! (Xxx159 ve 123244 arasındaki boşlukla ne olur??) –
Brandon