orator icon indicating copy to clipboard operation
orator copied to clipboard

Upgrading to mysql 8.0.19 breaks migrations

Open GrahamMThomas opened this issue 4 years ago • 2 comments

Migrations worked fine on 8.0.17. I upgraded to 8.0.19 to support Catalina and now migrations no longer work.

pymysql==0.9.3 orator==0.9.9

orator migrate -c config/database.py -f -vvv

  [KeyError]      
  'int unsigned'  
                  

Exception trace:
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/cleo/application.py in run() at line 94
   status_code = self.do_run(input_, output_)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/cleo/application.py in do_run() at line 197
   status_code = command.run(input_, output_)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/cleo/commands/command.py in run() at line 98
   return super(Command, self).run(i, o)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/cleo/commands/base_command.py in run() at line 146
   status_code = self.execute(input_, output_)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/commands/command.py in execute() at line 39
   return self.handle()
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/commands/migrations/migrate_command.py in handle() at line 41
   migrator.run(path, pretend)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/migrations/migrator.py in run() at line 51
   self.run_migration_list(path, migrations, pretend)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/migrations/migrator.py in run_migration_list() at line 69
   self._run_up(path, f, batch, pretend)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/migrations/migrator.py in _run_up() at line 88
   migration.up()
 /Users/gthomas1/intuit_repos/auto-threat-briefing/source/migrations/2018_10_24_170702_make_columns_nullable.py in up() at line 13
   table.string('desirable').nullable().change()
 /Users/gthomas1/.pyenv/versions/3.7.4/lib/python3.7/contextlib.py in __exit__() at line 119
   next(self.gen)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/schema/builder.py in table() at line 76
   self._build(blueprint)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/schema/builder.py in _build() at line 146
   blueprint.build(self._connection, self._grammar)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/schema/blueprint.py in build() at line 29
   for statement in self.to_sql(connection, grammar):
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/schema/blueprint.py in to_sql() at line 52
   sql = getattr(grammar, method)(self, command, connection)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/schema/grammars/grammar.py in compile_change() at line 225
   table_diff = self._get_changed_diff(blueprint, schema)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/schema/grammars/grammar.py in _get_changed_diff() at line 250
   self.get_table_prefix() + blueprint.get_table()
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/dbal/schema_manager.py in list_table_details() at line 49
   columns = self.list_table_columns(table_name)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/dbal/schema_manager.py in list_table_columns() at line 32
   return self._get_portable_table_columns_list(table, table_columns)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/dbal/schema_manager.py in _get_portable_table_columns_list() at line 65
   column = self._get_portable_table_column_definition(table_column)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/dbal/mysql_schema_manager.py in _get_portable_table_column_definition() at line 35
   type = self._platform.get_type_mapping(db_type)
 /Users/gthomas1/.pyenv/versions/3.7.4/envs/autotb/lib/python3.7/site-packages/orator/dbal/platforms/platform.py in get_type_mapping() at line 385
   return self.INTERNAL_TYPE_MAPPING[db_type]

GrahamMThomas avatar Feb 27 '20 22:02 GrahamMThomas

Update:

Adding "int unsigned": "integer",

to

https://github.com/sdispater/orator/blob/0.9/orator/dbal/platforms/mysql57_platform.py

seems to have fixed my problem.

Dunno what the devs want to do with this information lol.

GrahamMThomas avatar Feb 27 '20 23:02 GrahamMThomas

Update:

Adding "int unsigned": "integer",

to

https://github.com/sdispater/orator/blob/0.9/orator/dbal/platforms/mysql57_platform.py

seems to have fixed my problem.

Dunno what the devs want to do with this information lol.

Hello. After adding this line, do you meet any other problems with MySQL 8.0?

darren2046 avatar Aug 07 '22 05:08 darren2046