Public bug reported:

While importing mailing lists from Mailman 2.1 (sudo mailman import21),
the following error occurred:

  result = self._query(query)
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 1245, 
in _execute_context
    self.dialect.do_execute(
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 581, 
in do_execute
    cursor.execute(statement, parameters)
  File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 517, in 
query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 732, in 
_read_query_result
    result.read()
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 1075, in 
read
    first_packet = self.connection._read_packet()
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 684, in 
_read_packet
    packet.check_error()
  File "/usr/lib/python3/dist-packages/pymysql/protocol.py", line 220, in 
check_error
    err.raise_mysql_exception(self._data)
  File "/usr/lib/python3/dist-packages/pymysql/err.py", line 109, in 
raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.DataError: (1406, "Data too long for column 'info' at row 1")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/bin/mailman", line 11, in <module>
    load_entry_point('mailman==3.2.2', 'console_scripts', 'mailman')()
  File "/usr/lib/python3/dist-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/mailman/bin/mailman.py", line 68, in 
invoke
    return super().invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/decorators.py", line 17, in 
new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/lib/python3/dist-packages/mailman/commands/cli_import.py", line 
76, in import21
    import_config_pck(mlist, config_dict)
  File "/usr/lib/python3/dist-packages/mailman/utilities/importer.py", line 
284, in import_config_pck
    setattr(mlist, key, value)
  File "/usr/lib/python3/dist-packages/mailman/database/transaction.py", line 
85, in wrapper
    return function(args[0], config.db.store, *args[1:], **kws)
  File "/usr/lib/python3/dist-packages/mailman/model/mailinglist.py", line 404, 
in filter_extensions
    results.delete()
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/query.py", line 3752, in 
delete
    delete_op.exec_()
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 
1691, in exec_
    self._do_pre()
  File "<string>", line 1, in <lambda>
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 
1737, in _do_pre
    session._autoflush()
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1597, 
in _autoflush
    util.raise_from_cause(e)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 398, in 
raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 153, in 
reraise
    raise value
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1586, 
in _autoflush
    self.flush()
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 2479, 
in flush
    self._flush(objects)
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 2617, 
in _flush
    transaction.rollback(_capture_exception=True)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/langhelpers.py", line 
68, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 153, in 
reraise
    raise value
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 2577, 
in _flush
    flush_context.execute()
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/unitofwork.py", line 422, 
in execute
    rec.execute(self)
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/unitofwork.py", line 586, 
in execute
    persistence.save_obj(
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 
230, in save_obj
    _emit_update_statements(
  File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 
995, in _emit_update_statements
    c = cached_connections[connection].execute(
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 982, in 
execute
    return meth(self, multiparams, params)
  File "/usr/lib/python3/dist-packages/sqlalchemy/sql/elements.py", line 287, 
in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 1095, 
in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 1249, 
in _execute_context
    self._handle_dbapi_exception(
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 1476, 
in _handle_dbapi_exception
    util.raise_from_cause(sqlalchemy_exception, exc_info)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 398, in 
raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 152, in 
reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 1245, 
in _execute_context
    self.dialect.do_execute(
  File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 581, 
in do_execute
    cursor.execute(statement, parameters)
  File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 517, in 
query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 732, in 
_read_query_result
    result.read()
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 1075, in 
read
    first_packet = self.connection._read_packet()
  File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 684, in 
_read_packet
    packet.check_error()
  File "/usr/lib/python3/dist-packages/pymysql/protocol.py", line 220, in 
check_error
    err.raise_mysql_exception(self._data)
  File "/usr/lib/python3/dist-packages/pymysql/err.py", line 109, in 
raise_mysql_exception
    raise errorclass(errno, errval)
sqlalchemy.exc.DataError: (raised as a result of Query-invoked autoflush; 
consider using a session.no_autoflush block if this flush is occurring 
prematurely)
(pymysql.err.DataError) (1406, "Data too long for column 'info' at row 1")
[SQL: UPDATE mailinglist SET next_request_id=%(next_request_id)s, 
info=%(info)s, post_id=%(post_id)s WHERE mailinglist.id = %(mailinglist_id)s]
[parameters: {'next_request_id': 195, 'info': '........(removed confidential 
information)....', 'post_id': 59.0, 'mailinglist_id': 12}]
(Background on this error at: http://sqlalche.me/e/9h9h)

----

It appears that in the mailman3 database in table mailinglist the column
info is too small.

I fixed this with the following workaround:

- Loggin into MySQL
- mysql> USE mailman3
- mysql> ALTER TABLE mailinglist MODIFY COLUMN `info` varchar(1023) CHARACTER 
SET utf8 COLLATE utf8_bin DEFAULT NULL;

Suggest to make a larger field the default in future versions of
mailman.

** Affects: mailman3 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1881358

Title:
  mailman3 database in table mailinglist column info is too small

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mailman3/+bug/1881358/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to