社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

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

user3299633 • 3 年前 • 1272 次点击  

我正在开发一个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
 
1272 次点击  
文章 [ 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。如果是这样,那就跳过它。如果不是,那么是其他错误,所以报告它。