由于 mysqldb 区分大小写,Presto show tables 显示不存在的 table
Presto show tables shows a nonexistent table due to case sensitivity with mysqldb
为了这个问题的目的,我说的是品牌重塑后的 prestosql.io
或 Trino
。
我这里有一个 table(详细信息已编辑):
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
的联系告诉我它是 Foo
(f 大写):
mysql> describe b.Foo;
+--------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------------------+----------------+
...
mysql> describe b.foo;
ERROR 1146 (42S02): Table 'b.foo' doesn't exist
当我尝试快速描述这个 table 时,它失败了:
presto> DESCRIBE a.b.Foo;
Query <id> failed: line 1:1: Table 'a.b.foo' does not exist
DESCRIBE a.b.Foo
检查后,请注意它是如何说“Table 'a.b.foo' 不存在”,而不是 'a.b.Foo'。看到 mysql is case sensitive in most unices,在我看来,连接器从 Presto 传递了一个无效的 table 名称,我无法访问实际的 table.
如果我的假设是正确的,我该如何解决这个问题?
为了处理 MySQL 中的非小写 table 名称,您当前需要设置 case-insensitive-name-matching=true
目录 属性.
将在 https://github.com/trinodb/trino/issues/17 中提供对混合大小写 table 和列名称的更适当支持。
为了这个问题的目的,我说的是品牌重塑后的 prestosql.io
或 Trino
。
我这里有一个 table(详细信息已编辑):
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
的联系告诉我它是 Foo
(f 大写):
mysql> describe b.Foo;
+--------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------------------+----------------+
...
mysql> describe b.foo;
ERROR 1146 (42S02): Table 'b.foo' doesn't exist
当我尝试快速描述这个 table 时,它失败了:
presto> DESCRIBE a.b.Foo;
Query <id> failed: line 1:1: Table 'a.b.foo' does not exist
DESCRIBE a.b.Foo
检查后,请注意它是如何说“Table 'a.b.foo' 不存在”,而不是 'a.b.Foo'。看到 mysql is case sensitive in most unices,在我看来,连接器从 Presto 传递了一个无效的 table 名称,我无法访问实际的 table.
如果我的假设是正确的,我该如何解决这个问题?
为了处理 MySQL 中的非小写 table 名称,您当前需要设置 case-insensitive-name-matching=true
目录 属性.
将在 https://github.com/trinodb/trino/issues/17 中提供对混合大小写 table 和列名称的更适当支持。