Page 1 of 1

[SOLVED] [BUG] Error while migrating from Uaseco

Posted: 04 Apr 2020, 20:45
by v2
Hi everyone,

First i would like to congratulate you guys, i love python and i'm impressed by pyplanet, it’s great.
Im trying to migrate our old uaseco database to pyplanet and i encountered an error while doing it.
Here it is :

Code: Select all

Migrating maps...
Traceback (most recent call last):
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", lin
e 170, in get
    return list(result)[0]
IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/contrib/conv
erter/uaseco.py", line 76, in migrate_maps
    map_instance = await Map.get_by_uid(s_map['Uid'])
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/apps/core/ma
niaplanet/models/map.py", line 115, in get_by_uid
    return await cls.get(uid=uid)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/db/mode
l.py", line 53, in get
    return await cls.objects.get(cls, *args, **kwargs)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", lin
e 172, in get
    raise model.DoesNotExist
pyplanet.apps.core.maniaplanet.models.map.MapDoesNotExist

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", lin
e 1540, in _run_sql
    yield from cursor.execute(operation, *args, **kwargs)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/cursors.py", line 239, in execute
    await self._query(query)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/cursors.py", line 457, in _query
    await conn.query(q)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 428, in query
    await self._read_query_result(unbuffered=unbuffered)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 622, in _read_query_result
    await result.read()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 1105, in read
    first_packet = await self.connection._read_packet()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 593, in _read_packet
    packet.check_error()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.IntegrityError: (1048, "Column 'file' cannot be null")

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 29, in <module>
    execute_from_command_line(sys.argv)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/management/__init__.py", line 259, in execute_from_command_line
    utility.execute()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/management/__init__.py", line 150, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/management/base.py", line 252, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/management/base.py", line 286, in execute
    output = self.handle(*args, **options)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/management/commands/db_convert.py", line 49, in handle
    instance.loop.run_until_complete(self.convert(instance, converter))
  File "/home/funky/.pyenv/versions/3.5.2/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete
    return future.result()
  File "/home/funky/.pyenv/versions/3.5.2/lib/python3.5/asyncio/futures.py", line 274, in result
    raise self._exception
  File "/home/funky/.pyenv/versions/3.5.2/lib/python3.5/asyncio/tasks.py", line 239, in _step
    result = coro.send(None)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/management/commands/db_convert.py", line 53, in convert
    await converter.start()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/contrib/converter/base.py", line 60, in start
    return await self.migrate(self.connection)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/contrib/converter/uaseco.py", line 31, in migrate
    await self.migrate_maps()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/contrib/converter/uaseco.py", line 89, in migrate_maps
    time_silver=s_map['SilverTime'], time_gold=s_map['GoldTime'],
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/db/model.py", line 135, in create
    return await super().create(**insert)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/db/model.py", line 66, in create
    await inst.save(force_insert=True)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/apps/core/maniaplanet/models/map.py", line 94, in save
    await super().save(*args, **kwargs)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/db/model.py", line 130, in save
    return await super().save(*args, **kwargs)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/db/model.py", line 109, in save
    pk_from_cursor = await self._insert(**field_dict)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pyplanet/core/db/model.py", line 72, in _insert
    return await cls.objects.create(cls, **insert)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", line 181, in create
    pk = yield from self.execute(query)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", line 269, in execute
    return (yield from execute(query))
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", line 433, in execute
    return (yield from coroutine(query))
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", line 597, in insert
    cursor = yield from _execute_query_async(query)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", line 1558, in _execute_query_async
    return (yield from _run_sql(query.database, *query.sql()))
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", line 1545, in _run_sql
    return cursor
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee.py", line 3656, in __exit__
    reraise(new_type, new_type(*exc_args), traceback)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee.py", line 135, in reraise
    raise value.with_traceback(tb)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/peewee_async.py", line 1540, in _run_sql
    yield from cursor.execute(operation, *args, **kwargs)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/cursors.py", line 239, in execute
    await self._query(query)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/cursors.py", line 457, in _query
    await conn.query(q)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 428, in query
    await self._read_query_result(unbuffered=unbuffered)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 622, in _read_query_result
    await result.read()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 1105, in read
    first_packet = await self.connection._read_packet()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/aiomysql/connection.py", line 593, in _read_packet
    packet.check_error()
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/home/funky/.pyenv/versions/pyplanet-funky/lib/python3.5/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
peewee.IntegrityError: (1048, "Column 'file' cannot be null")
It seems to happen when a map is present in uaseco db but the filename is missing ("NULL" in filename column) maybe because the map (file on disk) has been deleted.

What can i do ?

Using :
python 3.5.2
MySQL 5.5.62
Debian 8

Re: Error while migrating from Uaseco

Posted: 05 Apr 2020, 11:37
by toffe
Hi,

Can you please send me a message on discord. I would like to see some data examples when this happens.

Toffe#8999

Thank you,
Toffe

Re: Error while migrating from Uaseco

Posted: 05 Apr 2020, 15:23
by toffe
Issue was related to UAseco database with original data from XAseco2, which has a Null filename in the database.
The issue will be addressed in the next major release of PyPlanet: https://github.com/PyPlanet/PyPlanet/issues/821