ruby-on-rails – ‘令牌’ – 通过Rails和pg gem插入PostgreSQL
发布时间:2020-12-17 02:08:32 所属栏目:百科 来源:网络整理
导读:我最近开始尝试设置一个新的本地PostgreSQL服务器,连接到现有的Rails应用程序.我有一个表,我试图插入: postgres=# d+ events.t_sales_events Table "events.t_sales_events" Column | Type | Modifiers | Storage | Stats target | Description ----------
我最近开始尝试设置一个新的本地PostgreSQL服务器,连接到现有的Rails应用程序.我有一个表,我试图插入:
postgres=# d+ events.t_sales_events Table "events.t_sales_events" Column | Type | Modifiers | Storage | Stats target | Description ------------+-----------------------------+---------------------------------------------------------------------+----------+--------------+------------- id | integer | not null default nextval('events.t_sales_events_id_seq'::regclass) | plain | | event_name | character varying(45) | not null | extended | | actor_id | integer | | plain | | actor_type | character varying(45) | | extended | | json | jsonb | | extended | | created | timestamp without time zone | not null | plain | | modified | timestamp without time zone | not null | plain | | deleted | timestamp without time zone | | plain | | timestamp | timestamp without time zone | not null | plain | | context | text | | extended | | Indexes: "t_sales_events_pkey" PRIMARY KEY,btree (id) 这是我试图插入t_sales_events的事件的示例: event = { :event_name => "lead_created",:context => nil,:actor_type => "sales_user",:timestamp => "2013-03-18T07:13:42.000+0000",:json => { :dc_id => "00AA000000AAaaAAaa1",:name => "John Doe",:title => "CEO",:role => nil,:phone => nil,:company => "Does Does",:email => "jdoe@doesdoes.com",:dc_source => nil,:lead_id => nil },:actor_id => nil,:created => 2015-09-15 18:32:25 -0700,:modified => 2015-09-15 18:32:33 -0700 } 这是我运行SalesEvent.create(event)时得到的错误:( 0.2ms) BEGIN SQL (4.0ms) INSERT INTO "events"."t_sales_events" ("actor_id","actor_type","context","created","deleted","event_name","json","modified","timestamp") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9) RETURNING "id" [["actor_id",nil],["actor_type","sales_user"],["context",["created",Wed,16 Sep 2015 01:32:25 UTC +00:00],["deleted",["event_name","lead_created"],["json","---n:sfdc_id: 00AA000000AAaaAAaa1n:name: John Doen:title: CEOn:role: n:phone: n:company: Does Doesn:email: jdoe@doesdoes.comn:lead_id: n"],["modified",16 Sep 2015 01:32:33 UTC +00:00],["timestamp",Mon,18 Mar 2013 07:13:42 UTC +00:00]] PG::InvalidTextRepresentation: ERROR: invalid input syntax for type json DETAIL: Token "-" is invalid. CONTEXT: JSON data,line 1: -... : INSERT INTO "events"."t_sales_events" ("actor_id",$9) RETURNING "id" (0.1ms) ROLLBACK *** ActiveRecord::StatementInvalid Exception: PG::InvalidTextRepresentation: ERROR: invalid input syntax for type json DETAIL: Token "-" is invalid. CONTEXT: JSON data,$9) RETURNING "id" 在我看来,错误的产生是因为“—”被添加到标记为“json”的字段的开头,但我不知道为什么. 编辑:我在下面添加了SalesEvent的模型.我确实有序列化:json在那里.道歉 – 我忘记了我在尝试解决同样的错误时有点盲目地添加了它. class SalesEvent < ActiveRecord::Base establish_connection :warehouse_development self.table_name = "events.t_sales_events" serialize :json def self.get_all SalesEvent.all end end 删除该特定行将返回相同的“令牌” – “无效”错误,尽管由于输入不同: (0.1ms) BEGIN SQL (4.2ms) INSERT INTO "events"."t_sales_events" ("actor_id",16 Sep 2015 06:09:00 UTC +00:00],{:sfdc_id=>"00AA000000AAaaAAaa1",:name=>"John Doe",:title=>"CEO",:role=>nil,:phone=>nil,:company=>"Does Does",:email=>"jdoe@doesdoes.com",:dc_source=>nil,:lead_id=>nil}],16 Sep 2015 06:09:07 UTC +00:00],$9) RETURNING "id" 解决方法
事实证明,轨道3.2.17中的postgres连接器与jsonb对象不兼容.升级到4.2.4后,错误停止了.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |