【发布时间】:2020-10-26 21:33:52
【问题描述】:
我正在尝试从特定表中获取列名。
编辑: 一开始我忘了提,但是 python 脚本,即获取表名没有任何问题(不同的查询),但是选择列名的那个会出错。
当我在 DBeaver 的 SQL 编辑器中编写此查询(见下文)时,我得到了预期的结果。但是当我在我的 python 脚本中运行查询时,我收到一个错误,即 COLUMN_NAME 不存在。
SELECT column_name FROM information_schema.columns WHERE table_schema=<database-name> AND table_name=<table-name>;
(真实查询中db名和表名写正确)
我还需要提一下,当我之前使用 MySQL Workbench 时,这个用 python 编写的查询按预期工作。当我切换到 DBeaver 进行数据库管理时,问题就出现了。
为了让 information_schema 按预期工作,我是否可能需要在 DBeaver 内部执行一些进一步的步骤?
mysql --version >> mysql Ver 15.1 Distrib 10.4.13-MariaDB, for Linux (x86_64) using EditLine wrapper
【问题讨论】:
-
你在自相矛盾(首先你写的查询在 dbeaver 中工作,然后你写的没有)。
-
@Shadow 我已经重新提出了这个问题。感谢您指出。
-
更改用于管理 mysql 实例的客户端不会对连接到同一 mysql 服务器的程序产生任何影响。您必须更改了配置或访问控制中的某些内容才能导致 mysql 语句中的错误。
-
@Shadow PyMySql 是否有可能无法使用 MariaDB 完成所有查询?该程序最初是用 MySQL 而不是 MariaDB 测试的,但我使用的查询语法应该是相同的。编辑:因为我觉得它令人困惑,所以所有其他查询都有效,除了列名的查询。
-
这是一个很常见的错误:mariadb is not mysql! Mariadb 是 mysql 的 fork,具有越来越不同的功能,因此语法!您应该将您的开发环境与您的实时环境匹配到子版本级别!我认为 O. Jones 可能会对表/列名称的大小写敏感。您的确切选择语句是什么(请在您的问题中完全复制它)?您的开发和生产环境中的 lower_case_table_names 设置是什么?您的生产环境的确切版本是什么?
标签: mysql mariadb pymysql dbeaver