这就是我的看法Gemfile:
source 'http://rubygems.org'
gem 'rails', '3.1.2'
#gem 'sqlite3'
gem 'mysql2'
gem "rvm", "~> 1.9.2"
gem 'authlogic'
gem "taps", "~> 0.3.23"
gem "paperclip", "~> 2.4.5"
gem 'aws-s3'
gem 'actionmailer'
gem 'will_paginate'
group :assets do
gem 'sass-rails', '~> 3.1.5.rc.2'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
group :production do
gem 'therubyracer-heroku', '~> 0.8.1.pre3'
gem 'pg'
end
gem 'jquery-rails'
Run Code Online (Sandbox Code Playgroud)
这是将应用程序推送到Heroku的输出:
Counting objects: 307, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (291/291), done.
Writing objects: 100% …Run Code Online (Sandbox Code Playgroud) 有些谷歌搜索大约半天,我找不到使用pg gem(postgresql ruby gem)准备的INSERT语句的任何样本.
我试过这个(看完gem文档后):
def test2
conn = PG.connect( dbname: 'db1' )
conn.prepare("statement1", 'INSERT INTO table1 (id, name, profile) VALUES (?, ?, ?)')
end
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
pgtest.rb:19:in `prepare': ERROR: syntax error at or near "," (PG::Error)
LINE 1: INSERT INTO table1 (id, name, profile) VALUES (?, ?, ?)
^
from pgtest.rb:19:in `test2'
from pgtest.rb:25:in `<main>'
Run Code Online (Sandbox Code Playgroud) 我的数据库使用PostgreSQL.我在Mac上开发,需要这一行:
# db/schema.rb on Mac environment
enable_extension "plpgsql"
Run Code Online (Sandbox Code Playgroud)
但是,Linux上不需要扩展.
在这种情况下,我们应该忽略schema.rb并通过db:migrate为开发环境和生产环境生成吗?
我刚刚安装了heroku PSQL应用程序(v1.0),我无法使用gem pg"0.1.4"连接我的rails应用程序.我已经将路径PATH ="/ Applications/Postgres.app/Contents/MacOS/bin:$ PATH"添加到我的.profile和我的.bashrc文件中,但似乎没有任何东西允许我只是通过调用"psql"来运行psql.我成功使用"psql -h localhost".当我选择"psql"时,我得到:
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
我正在使用山狮.
我正在使用node-postgres生产应用程序,我想知道是否有任何我应该关注的事项?数据是否自动消毒node-postgres?
我在github页面上找不到任何关于它的信息:https://github.com/brianc/node-postgres
我试图使用下面的rails控制器调用一个Ruby脚本(连接到postgres数据库),但是它似乎在加载一个PG gem文件时遇到问题.我已将require语句设置为要求'pg'并尝试绝对路径(require /usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14.0/lib/pg/).文件'pg_ext'实际上存在于目录中.另外,我可以独立运行ruby脚本而没有任何问题(dbrubyscript.rb),但是当轨道被添加到这个等式中时,它会出现cannot load such file -- pg_ext错误.
这里的任何方向都将非常感激,因为我无法在网上找到解决此问题的任何内容
Rails控制器:
class TestdlController < ApplicationController
def runmyscript
load "/usr/local/rvm/my_app/ruby_scripts/reports/dbrubyscript.rb"
send_file '/usr/local/rvm/tmp/failedtests.csv', :type => 'text/csv', :disposition => 'inline'
flash[:notice] = "Reports are being processed..."
end
end
Run Code Online (Sandbox Code Playgroud)
.rb文件(dbrubyscript.rb)具有以下内容:
require 'rubygems'
require 'pg'
connects to (production) database
@conn = PGconn.connect("zzzzz.test.prod", 5432,"","","yyyyy_prod" ,"postgres", "xxxxxx")
.....
Run Code Online (Sandbox Code Playgroud)
跟踪错误: TestdlController中的LoadError#runmyscript
无法加载此类文件 - pg_ext
Rails.root:/ usr/local/rvm/my_app应用程序跟踪| 框架跟踪| 完整跟踪app/controllers/Testdl_controller.rb:3:在`runmyscript'中
加载以下文件时发生此错误:
/usr/local/rvm/my_app/ruby_scripts/reports/dbrubyscript.rb
/usr/local/rvm/gems/ruby-1.9.3-p194@railsTest/gems/pg-0.14. 0/lib/pg/
pg_ext
我正在将rails应用程序从使用mysql(mysql2 gem)转换为postgres(pg gem).
使用mysql,ActiveRecord::Base.connection.select_value调用返回根据数据键入的值,例如:
> ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM errors")
=> 86
> ActiveRecord::Base.connection.select_value("SELECT exception FROM errors where id=565")
=> "TechTalk.Genome.SqlExecutionException"
> ActiveRecord::Base.connection.select_value("SELECT id FROM errors where id=565")
=> 565
Run Code Online (Sandbox Code Playgroud)
但是,使用postgres,connection.select_value总是返回一个字符串:
> ActiveRecord::Base.connection.select_value("SELECT COUNT(*) FROM errors")
=> "1"
> ActiveRecord::Base.connection.select_value("SELECT id FROM errors")
=> "1"
> ActiveRecord::Base.connection.select_value("SELECT source FROM errors limit 1")
=> "webapp"
Run Code Online (Sandbox Code Playgroud)
这打破了一些单元测试,虽然这些是可修复的,但我确定我们还有其他依赖这些返回值的代码.有没有办法connection.select_value在使用postgres时获得正确输入的返回值?
我运行了一个简单的插入命令:
INSERT INTO names (name) VALUES ('john')
作为响应,我得到一个PG :: Result对象.我一直在挖掘这些文档,但是我无法从那个对象中挤出我需要的信息:我刚插入的行的ID是什么?
我最近更新到rails 4.1.6和ruby 2.1.3p242.我还更新了我系统上的所有宝石.创建新应用程序后,我在运行服务器时不断收到pg_ext加载文件错误.我在Windows 8 x64上使用PostgreSQL 9.3.pg gem在我以前的RoR安装下工作正常,它是rails 3.2和ruby 1.9.3.
在gem的安装目录下,我有一个2.0/pg_ext.so文件.我尝试将文件夹重命名为2.1并运行服务器.结果是一样的.我认为这是因为Ruby不允许要求.so文件.以下是错误的屏幕截图:

任何帮助将非常感激.谢谢!
我有一个模型,它使用 SORT/PAGE/PER PAGE 调用产品,它可以很好地使用数值作为参数,但不能使用字符串。这工作正常...
params.limit = 12
client.query('SELECT * FROM products LIMIT $1', [params.limit], function(err, result)
Run Code Online (Sandbox Code Playgroud)
然而这并不...
params.sort = 'product_id'
params.direction = 'DESC'
client.query('SELECT * FROM products ORDER BY $1 $2', [params.sort, params.direction], function(err, result)`
Run Code Online (Sandbox Code Playgroud)
我认为这是因为它将单词包装DESC为'DESC'但我不知道如何在不将其直接注入字符串的情况下实现这一点。
另外,LIMIT传递一个整数总是有效的,但ALL我认为出于同样的原因传递不会。
任何帮助都会非常有用!