summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Harney <eharney@redhat.com>2016-10-03 16:06:02 -0400
committerEric Harney <eharney@redhat.com>2016-10-03 16:08:03 -0400
commite79982fc2d4dab48e6bebc2117794e92f942b70f (patch)
tree40d88f45c7ff6b583b083b43bf9faf8465e7f72d
parentb8ffab6aeab9b5521989b15675abb89de2214311 (diff)
downloadoslo-db-e79982fc2d4dab48e6bebc2117794e92f942b70f.tar.gz
Add DBDataError for "Data too long"
This classifies the error that occurs when data is inserted that is too long for the VARCHAR's maximum length. Related-Bug: #1608849 Change-Id: I6e129d64b7eb68a0057e6b14baa39c72674a1fff
-rw-r--r--oslo_db/sqlalchemy/exc_filters.py2
-rw-r--r--oslo_db/tests/sqlalchemy/test_exc_filters.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/oslo_db/sqlalchemy/exc_filters.py b/oslo_db/sqlalchemy/exc_filters.py
index 6ab082e..da85e28 100644
--- a/oslo_db/sqlalchemy/exc_filters.py
+++ b/oslo_db/sqlalchemy/exc_filters.py
@@ -284,6 +284,8 @@ def _raise_mysql_table_doesnt_exist_asis(
r"^.*1366.*Incorrect string value:*")
@filters("sqlite", sqla_exc.ProgrammingError,
r"(?i).*You must not use 8-bit bytestrings*")
+@filters("mysql", sqla_exc.DataError,
+ r".*1406.*Data too long for column.*")
def _raise_data_error(error, match, engine_name, is_disconnect):
"""Raise DBDataError exception for different data errors."""
diff --git a/oslo_db/tests/sqlalchemy/test_exc_filters.py b/oslo_db/tests/sqlalchemy/test_exc_filters.py
index 4593c04..07a2fdb 100644
--- a/oslo_db/tests/sqlalchemy/test_exc_filters.py
+++ b/oslo_db/tests/sqlalchemy/test_exc_filters.py
@@ -754,6 +754,12 @@ class TestDataError(TestsExceptionFilter):
'\'resource\' at row 1"',
self.DataError)
+ def test_data_too_long_for_column(self):
+ self._run_bad_data_test("mysql",
+ '(1406, "Data too long for column '
+ '\'resource\' at row 1"',
+ self.DataError)
+
class IntegrationTest(test_base.DbTestCase):
"""Test an actual error-raising round trips against the database."""