FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Merge pull request #359 from ixcat/sqlexcept-357 · datajoint/datajoint-python@2158deb · GitHub

Repository navigation

Commit 2158deb

Browse files
Merge pull request #359 from ixcat/sqlexcept-357
Fix for specific MySQL exception discussed in #35[567].
2 parents fb34601 + 0cb9b45 commit 2158deb

3 files changed

Lines changed: 10 additions & 2 deletions

File tree

‎datajoint/base_relation.py‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,14 @@ def insert(self, rows, replace=False, ignore_errors=False, skip_duplicates=False
155155
table=self.full_table_name,
156156
fields='`'+'`,`'.join(rows.heading.names)+'`',
157157
select=rows.make_sql())
158-
self.connection.query(query)
158+
try:
159+
self.connection.query(query)
160+
except pymysql.err.InternalError as err:
161+
if err.args[0] == server_error_codes['unknown column']:
162+
# args[1] -> Unknown column 'extra' in 'field list'
163+
raise DataJointError('%s : To ignore extra fields, set ignore_extra_fields=True in insert.' % err.args[1])
164+
else:
165+
raise
159166
return
160167

161168
heading = self.heading

‎datajoint/settings.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030

3131
server_error_codes = {
32+
'unknown column': 1054,
3233
'command denied': 1142,
3334
'tables does not exist': 1146,
3435
'syntax error': 1149

‎tests/test_relation.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def test_insert_select(self):
101101
'real_id', 'date_of_birth', 'subject_notes', subject_id='subject_id+1000', species='"human"'))
102102
assert_equal(len(self.subject), 2*original_length)
103103

104-
@raises(InternalError)
104+
@raises(dj.DataJointError)
105105
def test_insert_select_ignore_extra_fields0(self):
106106
''' need ignore extra fields for insert select '''
107107
self.test_extra.insert1((self.test.fetch('key').max() + 1, 0, 0))

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL