undefined method database_authenticatable' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition:0xd715388>
迁移是:
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
t.recoverable
t.rememberable
t.trackable
t.timestamps
end
add_index :users, :email, :unique => true
add_index :users, :reset_password_token, :unique => true
end
def self.down
drop_table :users
end
end
Run Code Online (Sandbox Code Playgroud) 我正在使用RVM与ruby 2.0.0.当我尝试为PostgreSQL 安装pg gem时,我得到以下响应.
宝石安装pg
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
Could not create …Run Code Online (Sandbox Code Playgroud) 我有一个ruby脚本,我需要从数据库中检索所有值,并检索每个值.目前我很难对每个检索进行编码,但这仅在有3个值返回时才有效.我怎么能迭代这个?以下是我的代码:
require 'pg'
pg_conn = PGconn.connect(host = "main-pg-db-super.center.com", port = 6433, options = '', tty = '',
dbname = "master_data", login = "user", password = "password")
all_children = pg_conn.exec("SELECT id FROM pt.tests WHERE parent = '1';") # will return 3 results
puts all_children[0]['id']
puts all_children[1]['id']
puts all_children[2]['id']
Run Code Online (Sandbox Code Playgroud) 我尝试在我的Mac上捆绑我的Rails应用程序.在家里它工作正常,我已经设法解决它自己以前,但这次无论我尝试什么,似乎没有什么似乎正在努力解决它.
运行bundle/bundle install时收到的错误如下:
安装pg(0.17.0)Gem :: Installer :: ExtensionBuildError:错误:无法构建gem原生扩展.
Run Code Online (Sandbox Code Playgroud)/Users/notrab/.rbenv/versions/2.0.0-p0/bin/ruby extconf.rb检查pg_config ...否否pg_config ...尝试无论如何.如果构建失败,请再次尝试使用--with -pg-config =/path/to/pg_config检查libpq-fe.h ...否找不到'libpq-fe.h header *extconf.rb失败* 由于某些原因无法创建Makefile,可能缺少必要的库和/或标头.检查mkmf.log文件以获取更多详细信息.您可能需要配置选项.
提供的配置选项: - 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/notrab/.rbenv/versions/2.0.0-p0/bin/ruby --with-pg --without-pg --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include = $ {pg-dir}/include --with -pg-lib --without-pg-lib = $ {pg-dir} /
Gem文件将保留在/Users/notrab/Sites/Integrity/vendor/bundle/gems/pg-0.17.0中进行检查.
结果记录到/Users/notrab/Sites/Integrity/vendor/bundle/gems/pg-0.17.0/ext/gem_make.out
安装pg(0.17.0)时发生错误,Bundler无法继续.
gem install pg -v '0.17.0'在捆绑之前确保成功.
我显然试过跑步
gem install pg -v'0.17.0'并且它说它成功但是再次捆绑显示同样的错误.
我也试过跑步
gem install pg - --with-pg-config …
我正在使用/我想使用Postgresql作为数据库,但是当我输入"bundle install"或"bundle update"时,我收到此错误,我该怎么做才能解决这个问题?:)
Installing pg (0.17.1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/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 …Run Code Online (Sandbox Code Playgroud) 我使用Ruby pg gem在事务中运行了几个sql语句.我遇到的问题是由于防火墙设置,连接超时了这些查询.这里提出的解决方案不起作用,因为它需要jdbc连接字符串,而我在Ruby中(jRuby不是一个选项).将驱动程序移动到AWS以删除防火墙也不是一种选择.
我的代码如下:
conn = RedshiftHelper.get_redshift_connection
begin
conn.transaction do
# run my queries
end
ensure
conn.flush
conn.finish
end
Run Code Online (Sandbox Code Playgroud)
我现在正在研究PG异步API.我想知道我是否可以使用is_busy来防止防火墙超时,或者是那种效果.我找不到关于这个主题的好文档.感谢任何提示.
PS:我已经为单个查询解决了这个问题 - 我可以异步触发它并使用系统STV_INFLIGHT Redshift table来跟踪它的完成.事务不会以这种方式工作,因为我必须保持连接打开.
我只是想问哪个数据库模块更好,PG还是续集?我听说sequelize有时会出现交易问题.谢谢
我想传递一个像这样的ruby数组值:
sql = "SELECT $1"
User.connection.raw_connection.exec_params(sql, [[1,2]])
Run Code Online (Sandbox Code Playgroud)
这回来了
PG::IndeterminateDatatype: ERROR: could not determine data type of parameter $1
Run Code Online (Sandbox Code Playgroud)
如果我改变sql到"SELECT $1::int[]"我得到PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "[1, 2]".
有没有办法将ruby数组传入exec_params并将其转换为PostgreSQL数组?
我在postgres数据库中有一个类型的列date.这是一个像生日这样的列,它只是一个日期,不需要有时间部分.
使用knex获取此列时,结果是一个javascript Date对象.它可能是这样做的new Date(row.birthday),这是发送给客户端的结果.
现在的问题是客户端收到的值是标准的ISO 8601格式,带有时间部分和Z.当客户端尝试从此字符串创建新的Date对象时,客户端可能具有基于客户端所在位置的错误日期值.
例如:
Date: 2018-06-15
Date sent to client: 2018-06-15T00:00:00Z
Client in +5:00 | Client in -5:00
2018-06-16 05:00:00 | 2018-05-15 10:00:00
Run Code Online (Sandbox Code Playgroud)
如果服务器是UTC,这很好,我们可以添加客户端的时区偏移并获取原始日期,但这感觉有点脆弱,并且在本地开发期间(不是UTC)中断.
一个简单的解决方案是将日期部分作为字符串发送给客户端.但这需要将日期存储varchar在服务器中,我们不想这样做.我们将丢失日期格式约束,并且将使用SQL进行基于日期的计算变得更加困难.
我们可以varchar在选择列时强制转换列,但是每次获取此表时我们都需要考虑这一点.这也意味着我们需要绕过ORM(Bookshelf)来处理这个表.
是否有一种简单的方法可以在knex或书架或postgres本身中指定列需要存储为date,具有所有附带的约束,但总是被提取为varchar?
我无法解决AWS Lambda上的gem加载错误。
{
"errorMessage": "LoadError: libpq.so.5: cannot open shared object file: No such file or directory - /var/task/vendor/bundle/ruby/2.5.0/gems/pg-1.1.4/lib/pg_ext.so",
"errorType": "Function<Sequel::AdapterNotFound>",
"stackTrace": [
"/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
"/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/pg-1.1.4/lib/pg.rb:4:in `<top (required)>'",
"/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
"/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/adapters/postgres.rb:6:in `<top (required)>'",
"/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
"/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/database/connecting.rb:88:in `load_adapter'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/database/connecting.rb:17:in `adapter_class'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/database/connecting.rb:45:in `connect'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/core.rb:121:in `connect'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/core.rb:399:in `adapter_method'",
"/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/core.rb:406:in `block (2 levels) in def_adapter_method'",
"/var/task/lib/warehouse/loader.rb:5:in `connection'",
"/var/task/lib/warehouse/loader.rb:24:in `initialize'",
"/var/task/lib/warehouse/update.rb:43:in `new'",
"/var/task/lib/warehouse/update.rb:43:in `block in handle'",
"/var/task/lib/warehouse/update.rb:42:in `each'",
"/var/task/lib/warehouse/update.rb:42:in `handle'",
"/var/task/lambda.rb:11:in `handler'"
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Sequel库从AWS Lambda建立PSQL连接,但似乎该函数找不到so文件。我已将依赖关系打包到vendor/bundle,在CodeBuild上的Ubuntu中内置,并验证了.so文件是否存在于上载到lambda的结果工件中。我还编辑了$ …
pg ×10
ruby ×7
postgresql ×6
gem ×2
arrays ×1
aws-lambda ×1
bookshelf.js ×1
bundle ×1
javascript ×1
knex.js ×1
macos ×1
node.js ×1
openssl ×1
rubygems ×1
sequel ×1
sequelize.js ×1