标签: pg

仅当在应用程序中使用 pg 包执行 INSERT SQL 操作时,“错误”:“枚举的输入值无效”

我开始构建应用程序的用户身份验证部分,并使用 PostgreSQL 作为数据库。我在 PG 中设置了一个表,代码如下。这是我用来设置USERS表的代码。当我INSERTSpsql控制台中执行此操作时,一切正常。但是,当我在使用pgnpm 包并通过客户端实例查询数据库的 NodeJS 应用程序中执行此操作时,无法正常工作。

  DROP EXTENSION IF EXISTS pgcrypto;
  DROP TYPE IF EXISTS genderEnum;
  DROP TYPE IF EXISTS roleEnum;
  -----------------------------------------------

  CREATE OR REPLACE FUNCTION trigger_set_timestamp()
  RETURNS TRIGGER AS $$
  BEGIN
      NEW.updated_at = NOW();
      RETURN NEW;
      END;
  $$ LANGUAGE plpgsql;

  -----------------------------------------------
  DROP EXTENSION IF EXISTS pgcrypto;
  CREATE EXTENSION pgcrypto;

  -----------------------------------------------

  CREATE TYPE genderEnum AS ENUM ('male', 'female', 'other');
  CREATE TYPE roleEnum AS ENUM ('banned', 'suspended', 'member', 'admin', 'developer');

  ----------------------------------------------- …
Run Code Online (Sandbox Code Playgroud)

postgresql enums node.js enumerated-types pg

17
推荐指数
1
解决办法
3万
查看次数

原始数据库在Rails中查询

我试图在rails中运行以下原始查询,只是为了看到它失败:

query   = 'SELECT * FROM users WHERE id IN ($1);'
results = ActiveRecord::Base.connection.exec_query(query, "My query", [ [1,2] ]);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我得到的错误从这开始:

Could not log "sql.active_record" event. NoMethodError: undefined method `binary?' for 1:Fixnum
Run Code Online (Sandbox Code Playgroud)

显然,我在[1, 2]某种程度上滥用了绑定参数,但我自己找不到合适的例子.

PS这是最小的失败示例,派生自更高级的查询,无法转换为ActiveRecord调用链.换句话说 - 在构建查询时我不能依赖Arel.

PPS我正在使用rails 4.0.1postgresql 9.3

sql postgresql ruby-on-rails pg ruby-on-rails-4

15
推荐指数
1
解决办法
9753
查看次数

在Rails <4中设置Postgres JSON列的默认值

所以我开始使用Postgres JSON数据类型,现在你可以用它做很多有趣的事情.在我的一个Rails应用程序中,它还没有Rails 4(已经添加了对Postgres JSON的支持),我添加了一个这样的JSON列:

create_table :foo do |t|
  t.column :bar, :json
end
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何为列设置默认值.我试着像所有的变化{},'{}','{}'::json,'[]'::json等,但我要么得到一个错误的迁移运行,或者它根本不起作用,这意味着迁移运行时,但是,当我创建一个新的Foo,barnil.

json ruby-on-rails pg rails-postgresql ruby-on-rails-3.2

14
推荐指数
2
解决办法
2万
查看次数

Rails原始查询csv格式,通过控制器返回

我正在使用活动记录来获取我的故事,然后生成CSV,这是在rails cast中完成的标准方式.但我有很多行,需要几分钟.我想如果我能让posgresql做csv渲染,那么我可以节省一些时间.

这是我现在所拥有的:

query = "COPY stories TO STDOUT WITH CSV HEADER;"
results = ActiveRecord::Base.connection.execute(query);
Run Code Online (Sandbox Code Playgroud)

但是此查询的结果为空:

 => #<PG::Result:0x00000006ea0488 @connection=#<PG::Connection:0x00000006c62fb8 @socket_io=nil, @notice_receiver=nil, @notice_processor=nil>> 
2.0.0-p247 :053 > result.count
 => 0 
Run Code Online (Sandbox Code Playgroud)

更好的了解方式:

2.0.0-p247 :059 >   result.to_json
 => "[]" 
Run Code Online (Sandbox Code Playgroud)

我怀疑我的控制器看起来像这样:

format.csv { send_data raw_results }
Run Code Online (Sandbox Code Playgroud)

这适用于普通查询,我只是无法弄清楚将CSV结果返回到rails的SQL语法.

UPDATE

CSV输出从120000毫秒下降到290毫秒

我的模特:

def self.to_csv(story_ids)

    csv  = []
    conn = ActiveRecord::Base.connection.raw_connection
    conn.copy_data("COPY (SELECT * FROM stories WHERE stories.id IN (#{story_ids.join(',')})) TO STDOUT WITH (FORMAT CSV, HEADER TRUE, FORCE_QUOTE *, ESCAPE E'\\\\');") do
      while row = conn.get_copy_data
        csv.push(row)
      end …
Run Code Online (Sandbox Code Playgroud)

csv postgresql pg ruby-on-rails-4 rails-activerecord

14
推荐指数
1
解决办法
3360
查看次数

rails 4.2.0:无法在ubuntu 14.04上安装pg gem

我最近尝试将我的轨道3.2*应用程序升级到rails 4.2.*.但是,我在安装'pg'宝石时被拦住了.当我用Google搜索时,解决方案主要与OSX相关.但我正在使用ubuntu 14.04.需要针对以下问题提出任何建议.

postgresql 9.3.5在我的机器上安装了版本.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=. …
Run Code Online (Sandbox Code Playgroud)

pg ruby-on-rails-4

14
推荐指数
2
解决办法
1万
查看次数

在osx上安装pg gem时出错

我在osx 10.6.7尝试在新的rails 3.0.7应用程序上运行bundle install,并且在尝试构建pg gem时它仍然失败.它一直告诉我,我需要开发人员工具.但据我所知,我已经安装了开发人员工具.

这是xcodebuild -version的输出

Xcode 3.2.6
Component versions: DevToolsCore-1809.0; DevToolsSupport-1806.0
BuildVersion: 10M2518
Run Code Online (Sandbox Code Playgroud)

这是失败的pg gem构建的输出

/Users/bm/.rvm/rubies/ruby-1.9.2-head/bin/ruby extconf.rb --with-pg-config=/Library/PostgreSQL/8.4/bin/pg_config
Using config values from /Library/PostgreSQL/8.4/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/bm/.rvm/rubies/ruby-1.9.2-head/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib …
Run Code Online (Sandbox Code Playgroud)

ruby macos gem ruby-on-rails pg

13
推荐指数
6
解决办法
1万
查看次数

Rails迁移总是插入空格或更改模式中列的顺序

我的rails迁移使用空格和表列的位置更新架构,这是一个令人沮丧的问题.

因此,大多数情况下,当我运行bundle exec rake db:migrate它时,将执行以下方案之一.当我将它合并到我们的主分支中并且其他开发人员解决这个问题时,他们的rails迁移会恢复标签和位置排序.

我们注意到,如果我是模式的最后一个提交者,那么团队中的所有三个开发人员在运行迁移时都会遇到相同的问题.

我刚刚更新postgres to v9.2.4了与其他开发者相同的内容.还有什么我可以尝试的想法?

例子

下面是git diffs来演示正在发生的事情.

重新排序模式的示例:

   create_table "accounts", :force => true do |t|
     t.integer  "organisation_id"
-    t.boolean  "active",             :default => false
     t.text     "notes"
+    t.boolean  "active",             :default => false
   end
Run Code Online (Sandbox Code Playgroud)

向标志添加标签的示例:

   create_table "comments", :force => true do |t|
-    t.integer  "commentable_id",   :default => 0
-    t.string   "commentable_type", :default => ""
+    t.integer  "commentable_id",     :default => 0
+    t.string   "commentable_type",   :default => ""
-    t.datetime "created_at",                       :null => false
- …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails pg rails-postgresql ruby-on-rails-3.2 postgresql-9.2

13
推荐指数
2
解决办法
1346
查看次数

rake db:设置结果为fe_sendauth没有提供密码

当我运行:rake db:setup

我得到:

fe_sendauth: no password supplied

Couldn't create database for {"adapter"=>"postfresql", "encoding"=>"unicode",
"host"=>"localhost", "pool"=>5, "username"=>"my_user", "password"=>nil,  
"database"=>"my_db_test"}

-- enable_extension("plpgqsl")
rake aborted


Tasks: TOP => db:schema:load
Run Code Online (Sandbox Code Playgroud)

我的database.yml:

connection: &connection
adapter: postgresql
encoding: unicode
host:     localhost
pool: 5
username: my_user
password:

development:
  <<: *connection
  database: my_db_development

test: &test
  <<: *connection
  database: my_db_test
Run Code Online (Sandbox Code Playgroud)

已经在这个问题中更改了我的pg_hba.conf:尝试为ror应用程序设置postgres,收到错误 - fe_sendauth:没有提供密码 但它根本没有帮助.

ruby postgresql ubuntu ruby-on-rails pg

12
推荐指数
1
解决办法
2万
查看次数

尝试运行“npm run serve:dev”时出现“错误:请手动安装 pg 包”?

我正在尝试使用脚本运行应用程序,npm run serve:devError: Please install pg package manually在尝试运行时出现错误npm run serve:dev

我已经试过了 npm install -g pg','npm install -g pg-hstore

错误:

kshitij-mag@0.1.0 serve:dev /home/qroach/kshitij-mag nodemon --ignore './src/' --exec babel-node --presets babel-preset-env ./server/bin/www

[nodemon] 1.18.10 [nodemon] 随时重启,输入rs [nodemon] watch: 。[nodemon] 启动 babel-node --presets babel-preset-env ./server/bin/www /home/qroach/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:81 throw new Error(请安装${moduleName} 包手动);^

错误:请在 ConnectionManager._loadDialectModule (/home/qroach/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:81:15) 在新的 ConnectionManager (/home/qroach/node_modules/sequelize/ lib/dialects/postgres/connection-manager.js:18:24) 在新的 PostgresDialect (/home/qroach/node_modules/sequelize/lib/dialects/postgres/index.js:14:30) 在新的 Sequelize (/home/ qroach/node_modules/sequelize/lib/sequelize.js:241:20)在对象。(/home/qroach/kshitij-mag/server/db/models/index.js:16:15) at Module._compile (internal/modules/cjs/loader.js:799:30) at loader (/usr/lib) /node_modules/babel-cli/node_modules/babel-register/lib/node.js:144:5) at Object.require.extensions.(anonymous function) [as .js] (/usr/lib/node_modules/babel-cli /node_modules/babel-register/lib/node.js:154:7) …

postgresql networking node.js npm pg

12
推荐指数
2
解决办法
1万
查看次数

在 ubuntu 22.04 上安装 ruby​​ 的正确方法是什么

使用 rvm 在 ubuntu 22.04 上安装 ruby​​ 时出现问题,因为它会给出以下错误 在此输入图像描述

Error running '__rvm_make -j8',
please read /usr/share/rvm/log/1655413907_ruby-2.5.0/make.log

There has been an error while running make. Halting the installation.
Run Code Online (Sandbox Code Playgroud)

如果我尝试安装 ruby​​ 2.7.0、2.7.1,也会出现同样的错误。2.7.2 及更高版本。

我在这里找到了使用以下步骤的建议

rvm pkg 安装 openssl

rvm 删除 xxx

rvm install xxx -C --with-openssl-dir=$HOME/.rvm/usr

这使得安装成功,但一些库(如 pg、rails 或 puma)无法与以这种方式安装的 ruby​​ 版本一起使用。例如,在捆绑安装后,如果运行命令“rails db:migrate”,它将给您带来来自 pg gem 的另一个错误 - Segmentation failure

/usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record.rb:113: [BUG] Segmentation fault at 0x00007f03df83e140
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0011 p:0009 s:0055 e:000053 METHOD /usr/share/rvm/gems/ruby-2.5.0/gems/listen-3.1.5/lib/listen/record/entry.rb:53 …
Run Code Online (Sandbox Code Playgroud)

ruby ubuntu openssl ruby-on-rails pg

12
推荐指数
3
解决办法
1万
查看次数