gpt4 book ai didi

mysql - Ruby MySQL 输出在不同服务器上发生冲突

转载 作者:行者123 更新时间:2023-11-29 13:19:40 25 4
gpt4 key购买 nike

我在 github (/ninjex/rubot) 上编写了一个 Ruby IRC 机器人,它与我刚刚购买的专用服务器上的 MySQL 存在一些冲突的输出。

首先,我们在 MySQL 文件夹(在 .gitignore 中)中建立了与数据库的连接,它看起来类似于以下代码块。

@con = Mysql.new('localhost', 'root', 'pword', 'db_name')

然后我们有一个实际的函数来查询数据库

def db_query
que = get_message # Grabs query from user i.e,./db_query SELECT * FROM words
results = @con.query(que) # Send query through the connection i.e, @con.query("SELECT * FROM WORDS")
results.each {|x| chan_send(x)} # For each row returned, send it to the channel via
end

在我的本地计算机上,运行命令时:

./db_query 从单词中选择金额、用户 WHERE user = 'Bob' 且 word = 'hello'

我以类似数组的方式在 IRC 中接收输出:["17", "Bob"] 其中 17 是金额,Bob 是用户。

但是,在我的专用服务器上使用相同的函数会产生如下输出: 17Bob 我已尝试对代码进行许多更改,并尝试将数据解析为它自己的变量,但是似乎 17Bob 作为单个变量出现,使得它无法解析为数组之类的东西,然后我可以使用它来正确发送数据。

这在我的本地计算机和专用服务器上对我来说似乎很奇怪,因为我期望输出首先将 17 发送到 IRC,然后像 Bob 一样:

17
Bob

所有的功能和源码你可以查看我的github/Ninjex/rubot,但是你可能需要安装一些gems。

最佳答案

一些注意事项:

  1. 确保您通过 get_message 清理查询。或者你正在向一些严肃的事情敞开心扉security problems .
  2. 确保您使用相同版本的 mysql gem、ruby 和 MySql。其中任何一项的差异都可能会改变预期的输出。
  3. 如果您束手无策且无法解决根本问题,您可以随时发送自定义分隔符并使用它进行拆分。不幸的是,它会搞乱实际正在运行的情况,需要将其删除。

以下是我在专用计算机上调试问题的方法:

def db_query
que = get_sanitized_message
results = @con.query(que)
require 'pry'
binding.pry

results.each {|x| chan_send(x)}
end
  1. 添加 pry gem到您的 Gemfile,或 gem install pry
  2. 更新您的代码以使用 pry:参见上文
  3. 当点击 binding.pry 行时,这将打开一个 pry 控制台,您可以询问正在运行的应用程序中的几乎所有内容。
  4. 我会查看结果,看看它是否是一个数组。只需在控制台中输入results,它就会打印出该值。同时输入 results.class。查询可能返回一些特殊的结果集对象,该对象不是数组,但具有访问结果数组的方法。
  5. 如果 results 是一个数组,则问题很可能出现在 chan_send 中。也许它需要使用诸如 putsprint 之类的东西来确保每条消息后面都有一个新行。您是否可能部署了不同版本的代码库?我还会在每个 block 中添加一个 sleep 1,以确保这与您对同时到达的消息的处理无关。

关于mysql - Ruby MySQL 输出在不同服务器上发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21022520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com