summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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."""