sql - 将 Rails SQL 输出转换为有效的 psql 语句

标签 sql ruby-on-rails postgresql

Active Job 在将作业放入其队列时创建以下 SQL。

INSERT INTO "delayed_jobs" ("queue", "handler", "run_at", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["queue", "mailers"], ["handler", "--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n  job_class: ActionMailer::DeliveryJob\n  job_id: 189ce295-1da8-47f5-9933-1b5657554731\n  queue_name: mailers\n  arguments:\n  - UserMailer\n  - register_success\n  - deliver_now\n  - _aj_globalid: gid://hub/User/1\n  - _aj_globalid: gid://hub/Order/294\n  - token: 561e6309deb2b9.72817606\n    number: 123\n    expiration: '2025-10-14'\n"], ["run_at", "2015-10-14 14:13:30.140078"], ["created_at", "2015-10-14 14:13:30.140408"], ["updated_at", "2015-10-14 14:13:30.140408"]]

我如何修改它以作为原始 SQL 查询使用?我认为 rails 输出应该是有效的 sql,但我收到错误

错误:“[”处或附近的语法错误 LINE 1: ...at") VALUES ($1, $2, $3, $4, $5) 返回 "id"[["queue", ...

最佳答案

它正在使用占位符。所以你需要用值替换 $x 所以

INSERT INTO "delayed_jobs" ("queue", "handler", "run_at", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["queue", "mailers"], ["handler", "--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n  job_class: ActionMailer::DeliveryJob\n  job_id: 189ce295-1da8-47f5-9933-1b5657554731\n  queue_name: mailers\n  arguments:\n  - UserMailer\n  - register_success\n  - deliver_now\n  - _aj_globalid: gid://hub/User/1\n  - _aj_globalid: gid://hub/Order/294\n  - token: 561e6309deb2b9.72817606\n    number: 123\n    expiration: '2025-10-14'\n"], ["run_at", "2015-10-14 14:13:30.140078"], ["created_at", "2015-10-14 14:13:30.140408"], ["updated_at", "2015-10-14 14:13:30.140408"]]

会来

INSERT INTO "delayed_jobs" ("queue", "handler", "run_at", "created_at", "updated_at")
 VALUES (
 'mailers',
 '--- !ruby/object:ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper\njob_data:\n  job_class: ActionMailer::DeliveryJob\n  job_id: 189ce295-1da8-47f5-9933-1b5657554731\n  queue_name: mailers\n  arguments:\n  - UserMailer\n  - register_success\n  - deliver_now\n  - _aj_globalid: gid://hub/User/1\n  - _aj_globalid: gid://hub/Order/294\n  - token: 561e6309deb2b9.72817606\n    number: 123\n    expiration: '2025-10-14'\n',
 '2015-10-14 14:13:30.140078', 
 '2015-10-14 14:13:30.140408',
 '2015-10-14 14:13:30.140408'
) RETURNING "id"

关于sql - 将 Rails SQL 输出转换为有效的 psql 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33132051/

相关文章:

php - 使用 mysql 和 count request 时出现问题

ruby-on-rails - ruby json新换行符渲染格式不正确

postgresql - Docker 备份和恢复 postgres

postgresql - 在 Postgres 中存储加密数据

Mysql——一个查询中有 2 个计数,错误的第二个计数结果

sql - 将 int、float 和 boolean 存储在同一数据库列中

mysql - 求sql外行,谁能告诉我这个sql效率高不高?

ruby-on-rails - 将应用程序从 Heroku 迁移到 AWS 的高级说明?

ruby-on-rails - Ruby on Rails:如何使用 OAuth2::AccessToken.post?

python - 密码验证失败,密码复杂