From 4b4ec8e01ecd3cc19cb5c85cd1c42a4437d2de9f Mon Sep 17 00:00:00 2001 From: Mohammed Alokshiya Date: Wed, 28 Dec 2016 23:21:50 -0600 Subject: [PATCH] Avoid exception when changing fieldname from upper to lowercase (#2517) --- frappe/model/db_schema.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/frappe/model/db_schema.py b/frappe/model/db_schema.py index 3ad1915c56..84fc44e6da 100644 --- a/frappe/model/db_schema.py +++ b/frappe/model/db_schema.py @@ -254,7 +254,7 @@ class DbTable: def get_columns_from_db(self): self.show_columns = frappe.db.sql("desc `%s`" % self.name) for c in self.show_columns: - self.current_columns[c[0]] = {'name': c[0], + self.current_columns[c[0].lower()] = {'name': c[0], 'type':c[1], 'index':c[3]=="MUL", 'default':c[4], "unique":c[3]=="UNI"} # GET foreign keys @@ -290,7 +290,7 @@ class DbTable: def alter(self): for col in self.columns.values(): - col.build_for_alter_table(self.current_columns.get(col.fieldname, None)) + col.build_for_alter_table(self.current_columns.get(col.fieldname.lower(), None)) query = [] @@ -298,7 +298,8 @@ class DbTable: query.append("add column `{}` {}".format(col.fieldname, col.get_definition())) for col in self.change_type: - query.append("change `{}` `{}` {}".format(col.fieldname, col.fieldname, col.get_definition())) + current_def = self.current_columns.get(col.fieldname.lower(), None) + query.append("change `{}` `{}` {}".format(current_def["name"], col.fieldname, col.get_definition())) for col in self.add_index: # if index key not exists @@ -395,7 +396,8 @@ class DbColumn: return # type - if (current_def['type'] != column_def) or \ + if (current_def['type'] != column_def) or\ + self.fieldname != current_def['name'] or\ ((self.unique and not current_def['unique']) and column_def not in ('text', 'longtext')): self.table.change_type.append(self)