如何解决由于 mysqldb 区分大小写,Presto show tables 显示一个不存在的表
就这个问题而言,我指的是品牌重塑后的 prestosql.io
或 Trino
。
我在这里有一张桌子(细节已编辑):
presto> SHOW TABLES FROM a.b;
Table
----------------
foo
...
presto> DESCRIBE a.b.foo;
Query <id> failed: line 1:1: Table 'a.b.foo' does not exist
DESCRIBE a.b.foo
它存在于一个 mysql 数据库中。我有一个 presto 目录 a
,它有一个 mysqldb 连接器可以从 presto 查询其数据。
奇怪的是,即使我与 foo
的联系告诉我它是 mysql
(f 大写),它仍然显示 Foo
:
mysql> describe b.Foo;
+--------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------------------+----------------+
...
mysql> describe b.foo;
ERROR 1146 (42S02): Table 'b.foo' doesn't exist
当我尝试在 presto 中描述这个表时,它失败了:
presto> DESCRIBE a.b.Foo;
Query <id> failed: line 1:1: Table 'a.b.foo' does not exist
DESCRIBE a.b.Foo
检查后,请注意它是如何说“表 'a.b.foo' 不存在”的,而不是 'a.b.Foo'。看看 mysql is case sensitive in most unices 的情况,在我看来,连接器正在从 Presto 传入一个无效的表名,我无法访问实际的表。
如果我的假设是正确的,我该如何解决这种情况?
解决方法
为了处理 MySQL 中的非小写表名,您目前需要设置 case-insensitive-name-matching=true
目录属性。
将在 https://github.com/trinodb/trino/issues/17 中提供对混合大小写表名和列名的更适当的支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。