Ubuntu 22.04下MariaDB需使用带引号标识符的问题求助
问题原因与解决办法
这是SQL语法的基础规则问题,直接说明:
- 你在
WHERE子句里的actryx_knowhow_bookstack、migrations是字符串字面量(要匹配的数据库名、表名),SQL要求这类值必须用单引号(')包裹。 - 当你去掉单引号时,MariaDB会把它们当成列名解析,而
information_schema.tables表根本没有叫actryx_knowhow_bookstack的列,所以触发1054未知列错误。
正确写法(必须用单引号包裹字符串值):
select * from information_schema.tables where table_schema = 'actryx_knowhow_bookstack' and table_name = 'migrations' and table_type = 'BASE TABLE';
错误写法的问题点:
select * from information_schema.tables where table_schema = actryx_knowhow_bookstack -- 未加引号,被识别为列名 and table_name = migrations -- 同理,被识别为列名 and table_type = 'BASE TABLE';
补充:如果要引用特殊命名的数据库/表(比如包含空格、特殊字符),才用反引号(```)包裹标识符,但你这里是匹配字符串值,和标识符引用是两回事,别搞混。
内容的提问来源于stack exchange,提问作者stustd
相关产品推荐
相关产品推荐

