gpt4 book ai didi

mysql - rails : using set_table_name to join across different databases on the same mysql server

转载 作者:行者123 更新时间:2023-11-29 03:14:37 27 4
gpt4 key购买 nike

由于遗留原因,我模型的表存储在同一 MySQL 服务器上的两个不同数据库中。起初我只是使用 establish_connection 在使用它的模型上指定第二个数据库。但是,当我在不同数据库中的两个模型之间建立 has_many :through 连接时,它爆炸了,因为 MySQL 无法跨两个不同的服务器加入。然后我在互联网上注意到我可以使用 set_table_name 'other_database.foos' 而不是使用 establish_connection

这主要是可行的,但是 table_exists? 总是返回 false,即使表确实存在,我正在使用的几个插件广泛使用了该函数。

这是 table_exists? 中的错误,还是我误用了 set_table_name?有没有其他方法可以做我想做的事情?

最佳答案

table_exists? 执行以下操作:

def table_exists?(table_name)
tables.include?(table_name.to_s)
end

其中 tables 是已建立连接的表名数组(在 databases.yml 中定义)。因此,如果您调用 table_exists?('database.table_name')table_exists?('table_name_from_second_database'),它将始终返回 false。

解决此问题的唯一方法是猴子补丁 table_exists? 或加载 tables 数组的函数。查看api docs查看从哪里开始打补丁。

祝你好运!

关于mysql - rails : using set_table_name to join across different databases on the same mysql server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595788/

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