首页 > 解决方案 > Mysql从information_schema获取错误信息

问题描述

在 Linux/Lucee 和 Coldfusion/Mysql 中编写。我的系统中有几个数据库,有很多表重叠。我有一个程序可以在每个数据库中将一个字段添加到给定的表中,比如活动。当然我不想改变一个不存在的表,所以我正在检查以确保表在那里。

最简单的方法是转到数据库并使用“显示像'Activity'这样的表”。为此,我在 ColdFusion 中使用了属于该数据库的数据源。但是,当我尝试这样做时,即使该表存在,我也得到了零个表。

<cfquery name = 'tbl' datasource = '#thedatasource#'>
  show tables like 'Activity'
</cfquery>

此查询的记录计数为零。然后我尝试使用信息模式并通过这个测试程序获得了更好的结果:

 <cfquery name = 'dblist' datasource = 'Moxart'>
    select MoxcoId from Moxco
 </cfquery>

 <cfloop query = 'dblist'> 
 <cfoutput> 
    <cfquery name = 'tbl' datasource = 'Moxart'>
       select table_schema,table_name from information_schema.tables
       where table_schema = '#MoxcoId#' AND table_name = 'Activity'
    </cfquery>
    <cfdump var = '#tbl#'>
 </cfoutput>
</cfloop>

这给出了完全正确的答案。但是,当我将相同的代码放入实际程序时,它一直返回零记录。真正的程序相当长,但大部分开始都是从以前的表格中获取信息。从线

 <cfquery name = 'dblist' datasource = 'Moxart'>

唯一的区别是添加了此部分,因为 #MoxcoId# 并不总是架构名称。在这种情况下,变量#mmox# 为空白,因此不添加任何内容。

<cfif #MoxcoId# EQ 'Moxart'>
         <cfset pref = '#mmox#Moxware'>
      <cfelse>
          <cfset pref = '#mmox##MoxcoId#'>
      </cfif>  

当我对查询“tbl”进行转储时,它显示检索到零记录,即使代码看起来完全正确。

在此处输入图像描述

我很困惑。我的代码一定有问题,但我就是看不到。如果有人可以提出一些建议,我将不胜感激。

标签: mysqlinformation-schema

解决方案


推荐阅读