Postgresql 如何防止MS Access连接模式名和表名,从而超过64个字符的限制?

Postgresql 如何防止MS Access连接模式名和表名,从而超过64个字符的限制?,postgresql,ms-access,odbc,Postgresql,Ms Access,Odbc,几天来,我一直在努力解决这个问题,但运气不好。我加载了Libre-Office以了解如何处理它,它对PostgeSQL的本机支持工作得非常好,我可以看到真正的数据结构。这就是我发现我在处理不止一张桌子的原因。我在MS Access中看到的是两个名称连接在一起。连接使它们超过了ODBC驱动程序中内置的64个字符的限制。我在服务器端看到了许多关于修改namedatalen的引用,但我的问题在ODBC端。大多数表都在64个字符的限制下,即使使用串联,也可以正常工作。因此,我知道其他一切都在起作用。我得

几天来,我一直在努力解决这个问题,但运气不好。我加载了Libre-Office以了解如何处理它,它对PostgeSQL的本机支持工作得非常好,我可以看到真正的数据结构。这就是我发现我在处理不止一张桌子的原因。我在MS Access中看到的是两个名称连接在一起。连接使它们超过了ODBC驱动程序中内置的64个字符的限制。我在服务器端看到了许多关于修改
namedatalen
的引用,但我的问题在ODBC端。大多数表都在64个字符的限制下,即使使用串联,也可以正常工作。因此,我知道其他一切都在起作用。我得到的具体错误是

'your\u extra\u long\u schema\u name\u your\u table\u name\u您希望从中获取数据的\u
不是有效的名称。确保它不包含无效字符
或者标点符号,而且不太长


Access数据库中的对象名称限制为64个字符(参考:)。在Access UI中创建ODBC链接表时,默认行为是用下划线连接架构名称和表名称,并将其用作链接表名称,例如,架构
public
中的远程表
table1
将在Access中生成名为
public\u table1
的链接表。如果此名称超过64个字符,Access将抛出错误

但是,我们可以使用VBA创建名称较短的表链接,如下所示:

选项比较数据库
选项显式
子so38999346()
DoCmd.TransferDatabase acLink,“ODBC数据库”,“ODBC;DSN=PostgreSQL35W”,可执行_
“公开的,霍多尔,霍多尔,霍多尔,霍多尔,霍多尔,霍多尔,霍多尔,霍多尔,霍多尔,霍多尔”_
“hodor_链接_表”
端接头

(使用Access 2010进行了测试。)

我刚刚用嵌套(分区)的PostgreSQL表进行了测试,Access没有连接(子)表名。但是,当模式名+主表名超过64个字符时,我确实复制了该错误消息。那可能是你的错误的真正来源吗?是的,那可能是。我不熟悉PosgreSQL,也不熟悉事物的命名方式。我添加了一个屏幕截图,显示了Libre中表的外观,以便clearify。我假设它们是嵌套的,但可以是schema name+master_table_name。我使用了封送SQL实用程序,该实用程序也使用ODBC驱动程序,并且工作正常。。。。看来这不是ODBC,而是Access。在元帅中,它们用句号分隔。