Py学习  »  DATABASE

如果列不存在,则绕过mysql错误

user3299633 • 3 年前 • 1313 次点击  

我正在开发一个mysql程序,可以在我所有的客户机环境中运行,但是我遇到了一个问题。我的一些客户在数据库中有一个特定的列,而其他客户则没有。

我试图使用update ignore,但如果该列不存在,我仍然会得到一个错误。

我知道我可以查询信息模式中存在该列的计数,但我想知道是否有更简单的方法来实现这一点。

update ignore table1 set columnA = null;
ERROR 1054 (42S22): Unknown column 'columnA' in 'field list'
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128429
 
1313 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Bill Karwin
Reply   •   1 楼
Bill Karwin    4 年前

你有两个选择:

第一种解决方案:首先检查列是否存在。

SELECT t.table_name, (c.column_name IS NULL) AS columnA_present
FROM INFORMATION_SCHEMA.TABLES AS t
LEFT OUTER JOIN INFORMATION_SCHEMA.COLUMNS AS c
  ON t.table_name = c.table_name and c.column_name = 'columnA'
WHERE t.table_name = 'table1';

第二种解决方案:运行更新并捕获错误。检查错误是否为1054。如果是这样,那就跳过它。如果不是,那么是其他错误,所以报告它。