Skip to content

MSSQL Server - clean_duplicate_history command error #943

Open
@LukeWebbJacobs

Description

@LukeWebbJacobs

Describe the bug
Using https://github.com/microsoft/mssql-django
Using database hosted in Azure.
Clean duplicate management command fails mid way through running.

Environment (please complete the following information):

  • Windows 10
  • Azure Managed SQL

Additional context

Removed 0 historical records for <class 'Apps.points.models.action_notes.action_notes.ActionNote'>
Removed 0 historical records for <class 'Apps.points.models.action_notes.action_notes.ActionNote'>
Removed 0 historical records for <class 'Apps.points.models.action_notes.action_notes.ActionNote'>
Traceback (most recent call last):
  File "F:\Python\Python39\lib\site-packages\django\db\utils.py", line 97, in inner
    return func(*args, **kwargs)
  File "F:\Python\Python39\lib\site-packages\mssql\base.py", line 612, in fetchmany
    return self.format_rows(self.cursor.fetchmany(chunk))
pyodbc.Error: ('HY010', '[HY010] [Microsoft][ODBC Driver Manager] Function sequence error (0) (SQLFetch)')

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

Traceback (most recent call last):
  File "C:\Program Files\JetBrains\PyCharm 2021.2.2\plugins\python\helpers\pycharm\django_manage.py", line 52, in <module>
    run_command()
  File "C:\Program Files\JetBrains\PyCharm 2021.2.2\plugins\python\helpers\pycharm\django_manage.py", line 46, in run_command
    run_module(manage_file, None, '__main__', True)
  File "F:\Python\Python39\lib\runpy.py", line 210, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "F:\Python\Python39\lib\runpy.py", line 97, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "F:\Python\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "F:\Website/django_v2\manage.py", line 22, in <module>
    main()
  File "F:\Website/django_v2\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "F:\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
Removed 0 historical records for <class 'Apps.points.models.action_notes.action_notes.ActionNote'>
    utility.execute()
  File "F:\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "F:\Python\Python39\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "F:\Python\Python39\lib\site-packages\django\core\management\base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "F:\Python\Python39\lib\site-packages\simple_history\management\commands\clean_duplicate_history.py", line 57, in handle
    self._process(to_process, date_back=options["minutes"], dry_run=options["dry"])
  File "F:\Python\Python39\lib\site-packages\simple_history\management\commands\clean_duplicate_history.py", line 84, in _process
    for o in model_query.iterator():
  File "F:\Python\Python39\lib\site-packages\django\db\models\query.py", line 353, in _iterator
    yield from self._iterable_class(self, chunked_fetch=use_chunked_fetch, chunk_size=chunk_size)
  File "F:\Python\Python39\lib\site-packages\django\db\models\query.py", line 68, in __iter__
    for row in compiler.results_iter(results):
  File "F:\Python\Python39\lib\site-packages\django\db\models\sql\compiler.py", line 1118, in apply_converters
    for row in map(list, rows):
  File "F:\Python\Python39\lib\site-packages\mssql\compiler.py", line 141, in _cursor_iter
    for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
  File "F:\Python\Python39\lib\site-packages\mssql\compiler.py", line 141, in <lambda>
    for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
  File "F:\Python\Python39\lib\site-packages\django\db\utils.py", line 97, in inner
    return func(*args, **kwargs)
  File "F:\Python\Python39\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "F:\Python\Python39\lib\site-packages\django\db\utils.py", line 97, in inner
    return func(*args, **kwargs)
  File "F:\Python\Python39\lib\site-packages\mssql\base.py", line 612, in fetchmany
    return self.format_rows(self.cursor.fetchmany(chunk))
django.db.utils.Error: ('HY010', '[HY010] [Microsoft][ODBC Driver Manager] Function sequence error (0) (SQLFetch)')

Process finished with exit code 1

Or run from cmd:

F:\Website\django_v2>F:\Python\Python39\python.exe manage.py clean_duplicate_history --auto
Traceback (most recent call last):
  File "F:\Python\Python39\lib\site-packages\mssql\base.py", line 488, in _set_autocommit
    self.connection.autocommit = autocommit
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]New transaction is not allowed because there are other threads running in the session. (3988) (SQLSetConnectAttr)')

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

Traceback (most recent call last):
  File "F:\Website\django_v2\manage.py", line 22, in <module>
    main()
  File "F:\Website\django_v2\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "F:\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "F:\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "F:\Python\Python39\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "F:\Python\Python39\lib\site-packages\django\core\management\base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "F:\Python\Python39\lib\site-packages\simple_history\management\commands\clean_duplicate_history.py", line 57, in handle
    self._process(to_process, date_back=options["minutes"], dry_run=options["dry"])
  File "F:\Python\Python39\lib\site-packages\simple_history\management\commands\clean_duplicate_history.py", line 85, in _process
    self._process_instance(o, model, stop_date=stop_date, dry_run=dry_run)
  File "F:\Python\Python39\lib\site-packages\simple_history\management\commands\clean_duplicate_history.py", line 97, in _process_instance
    with transaction.atomic():
  File "F:\Python\Python39\lib\site-packages\django\db\transaction.py", line 207, in __enter__
    connection.set_autocommit(False, force_begin_transaction_with_broken_autocommit=True)
  File "F:\Python\Python39\lib\site-packages\django\db\backends\base\base.py", line 415, in set_autocommit
    self._set_autocommit(autocommit)
  File "F:\Python\Python39\lib\site-packages\mssql\base.py", line 488, in _set_autocommit
    self.connection.autocommit = autocommit
  File "F:\Python\Python39\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "F:\Python\Python39\lib\site-packages\mssql\base.py", line 488, in _set_autocommit
    self.connection.autocommit = autocommit
django.db.utils.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]New transaction is not allowed because there are other threads running in the session. (3988) (SQLSetConnectAttr)')

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions