tortoise / aerich

A database migrations tool for TortoiseORM, ready to production.
https://github.com/tortoise/aerich
Apache License 2.0
808 stars 91 forks source link

There are some problem in mysql5.x #225

Open Vang-z opened 2 years ago

Vang-z commented 2 years ago

It made an error, when I use aerich init-db to init mysql. The last line shows version incompatibilities. System: Centos 7.9 Mysql: 5.0.95 Python: 3.9.9 aerich: 0.5.3 (I tried the latest version, But no use)

[root@VM-0-13-centos server]# aerich init-db
Success create app migrate location migrations/models
Traceback (most recent call last):
  File "/usr/local/python399/lib/python3.9/site-packages/tortoise/backends/mysql/client.py", line 44, in translate_exceptions_
    return await func(self, *args)
  File "/usr/local/python399/lib/python3.9/site-packages/tortoise/backends/mysql/client.py", line 214, in execute_script
    await cursor.execute(query)
  File "/usr/local/python399/lib/python3.9/site-packages/aiomysql/cursors.py", line 239, in execute
    await self._query(query)
  File "/usr/local/python399/lib/python3.9/site-packages/aiomysql/cursors.py", line 457, in _query
    await conn.query(q)
  File "/usr/local/python399/lib/python3.9/site-packages/aiomysql/connection.py", line 428, in query
    await self._read_query_result(unbuffered=unbuffered)
  File "/usr/local/python399/lib/python3.9/site-packages/aiomysql/connection.py", line 622, in _read_query_result
    await result.read()
  File "/usr/local/python399/lib/python3.9/site-packages/aiomysql/connection.py", line 1105, in read
    first_packet = await self.connection._read_packet()
  File "/usr/local/python399/lib/python3.9/site-packages/aiomysql/connection.py", line 593, in _read_packet
    packet.check_error()
  File "/usr/local/python399/lib/python3.9/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/usr/local/python399/lib/python3.9/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JSON NOT NULL\n) CHARACTER SET utf8;\nCREATE TABLE IF NOT EXISTS `file` (\n    `fid' at line 5")

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/aerich", line 8, in <module>
    sys.exit(main())
  File "/usr/local/python399/lib/python3.9/site-packages/aerich/cli.py", line 298, in main
    cli()
  File "/usr/local/python399/lib/python3.9/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/python399/lib/python3.9/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/usr/local/python399/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/python399/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/python399/lib/python3.9/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/python399/lib/python3.9/site-packages/click/decorators.py", line 21, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/usr/local/python399/lib/python3.9/site-packages/aerich/cli.py", line 41, in wrapper
    loop.run_until_complete(f(*args, **kwargs))
  File "/usr/local/python399/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/usr/local/python399/lib/python3.9/site-packages/aerich/cli.py", line 266, in init_db
    await generate_schema_for_client(connection, safe)
  File "/usr/local/python399/lib/python3.9/site-packages/tortoise/utils.py", line 31, in generate_schema_for_client
    await generator.generate_from_string(schema)
  File "/usr/local/python399/lib/python3.9/site-packages/tortoise/backends/base/schema_generator.py", line 448, in generate_from_string
    await self.client.execute_script(creation_string)
  File "/usr/local/python399/lib/python3.9/site-packages/tortoise/backends/mysql/client.py", line 52, in translate_exceptions_
    raise OperationalError(exc)
tortoise.exceptions.OperationalError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JSON NOT NULL\n) CHARACTER SET utf8;\nCREATE TABLE IF NOT EXISTS `file` (\n    `fid' at line 5")
long2ice commented 2 years ago

Upgrade MySQL server

Vang-z commented 2 years ago

Upgrade MySQL server

I cannot upgrade the database due to some force majeure, so is there any other way to solve this problem :(

long2ice commented 2 years ago

Overwrite JSONFIeld to use TEXT type

Vang-z commented 2 years ago

Okay, I will try it later