Dear Mike,

Thank you very much for the time you put to resolve this issue.
Last 2 days, I tried many times to see when I get this error. This is the 
procedure:

1. I created a new empty database called "Test"
2. I wrote declarative base for 3 tables
3. I used alembic autogenerate to produce migration code and then migrated 
to the latest version. In this stage I have 3 tables+1 alembic_version
4. I changed my base such that drop 2 existing tables and keep just one of 
them
5. I tried alembic autogenerate and got the error! Actually no matter my 
base definition is, I get the same error with alembic autogenerate unless I 
remove all tables from the database and build it from the scratch!

Points:
1. I don't experience this error with sqlite!
2. I don't have this problem if I don't use autogenerate
3. I'm running MacOS Mojave 10.14.1 and MySQL 8.0.11
4. I'm using Python, SQLALchemy, alembic, all the latest version
5. I provide you my problematic project including base definition, alembic 
folder and dump of current database.
6. If you need, this is the virtual environment which I'm using: 
https://www.dropbox.com/s/w55iujvg0fbn16k/venv.zip?dl=0

Sorry that my virtual environment is large! I hope you can reproduce the 
error. Thank you again :)


On Thursday, November 8, 2018 at 10:58:56 PM UTC+8, Mike Bayer wrote:
>
> On Thu, Nov 8, 2018 at 9:56 AM Mike Bayer <mik...@zzzcomputing.com 
> <javascript:>> wrote: 
> > 
> > On Thu, Nov 8, 2018 at 3:36 AM <ai.rese...@gmail.com <javascript:>> 
> wrote: 
> > > 
> > > Hi 
> > > 
> > > I had a problem with alembic autogenerate after updating to version 
> 1.0.2. I'm running MySQL 8.0.11 and Python 3.7.1 
> > > No matter how my base is defined, I always get the same error. I went 
> through the error and found out it comes from function " 
> > 
> > Did you also update SQLAlchemy version?  The check you see has to do 
> > with SQLAlchemy version 1.2.13.  Can you confirm that using SQLAlchemy 
> > 1.2.12 resolves the issue?  I can work towards making this check more 
> > defensive.     Additionally let me run the tests on MySQL 8 to see if 
> > I'm missing something. 
>
> no failures here, can you please provide a sample database model that 
> produces this error? 
>
> > 
> > 
> > > 
> > > _correct_for_mysql_bug_88718(self, fkeys, connection)" in module 
> "base.py" with this explaination: 
> > > 
> > > # Foreign key is always in lower case (MySQL 8.0) 
> > > # https://bugs.mysql.com/bug.php?id=88718 
> > > # issue #4344 for SQLAlchemy 
> > > 
> > > 
> > > This is log of error: 
> > > 
> > > INFO  [alembic.runtime.migration] Context impl MySQLImpl. 
> > > INFO  [alembic.runtime.migration] Will assume non-transactional DDL. 
> > > Traceback (most recent call last): 
> > >   File "---/venv/bin/alembic", line 11, in <module> 
> > >     load_entry_point('alembic==1.0.2', 'console_scripts', 'alembic')() 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/config.py", line 
> 502, in main 
> > >     CommandLine(prog=prog).main(argv=argv) 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/config.py", line 
> 496, in main 
> > >     self.run_cmd(cfg, options) 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/config.py", line 
> 479, in run_cmd 
> > >     **dict((k, getattr(options, k, None)) for k in kwarg) 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/command.py", line 
> 176, in revision 
> > >     script_directory.run_env() 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/script/base.py", 
> line 427, in run_env 
> > >     util.load_python_file(self.dir, 'env.py') 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/util/pyfiles.py", 
> line 81, in load_python_file 
> > >     module = load_module_py(module_id, path) 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/util/compat.py", 
> line 82, in load_module_py 
> > >     spec.loader.exec_module(module) 
> > >   File "<frozen importlib._bootstrap_external>", line 728, in 
> exec_module 
> > >   File "<frozen importlib._bootstrap>", line 219, in 
> _call_with_frames_removed 
> > >   File "alembic/env.py", line 75, in <module> 
> > >     run_migrations_online() 
> > >   File "alembic/env.py", line 70, in run_migrations_online 
> > >     context.run_migrations() 
> > >   File "<string>", line 8, in run_migrations 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/runtime/environment.py", line 
> 836, in run_migrations 
> > >     self.get_context().run_migrations(**kw) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/runtime/migration.py", line 
> 321, in run_migrations 
> > >     for step in self._migrations_fn(heads, self): 
> > >   File "---/venv/lib/python3.7/site-packages/alembic/command.py", line 
> 156, in retrieve_migrations 
> > >     revision_context.run_autogenerate(rev, context) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/autogenerate/api.py", line 
> 415, in run_autogenerate 
> > >     self._run_environment(rev, migration_context, True) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/autogenerate/api.py", line 
> 451, in _run_environment 
> > >     autogen_context, migration_script) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/autogenerate/compare.py", 
> line 22, in _populate_migration_script 
> > >     _produce_net_changes(autogen_context, upgrade_ops) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/autogenerate/compare.py", 
> line 48, in _produce_net_changes 
> > >     autogen_context, upgrade_ops, schemas 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/util/langhelpers.py", line 
> 313, in go 
> > >     fn(*arg, **kw) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/autogenerate/compare.py", 
> line 75, in _autogen_for_tables 
> > >     inspector, upgrade_ops, autogen_context) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/alembic/autogenerate/compare.py", 
> line 137, in _compare_tables 
> > >     inspector.reflecttable(t, None) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/sqlalchemy/engine/reflection.py", 
> line 633, in reflecttable 
> > >     exclude_columns, _extend_on, reflection_options) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/sqlalchemy/engine/reflection.py", 
> line 729, in _reflect_fk 
> > >     table_name, schema, **table.dialect_kwargs) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/sqlalchemy/engine/reflection.py", 
> line 447, in get_foreign_keys 
> > >     **kw) 
> > >   File "<string>", line 2, in get_foreign_keys 
> > >   File 
> "---/venv/lib/python3.7/site-packages/sqlalchemy/engine/reflection.py", 
> line 54, in cache 
> > >     ret = fn(self, con, *args, **kw) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/base.py", 
> line 2081, in get_foreign_keys 
> > >     self._correct_for_mysql_bug_88718(fkeys, connection) 
> > >   File 
> "---/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/base.py", 
> line 2126, in _correct_for_mysql_bug_88718 
> > >     for col in fkey['referred_columns'] 
> > >   File 
> "---/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/base.py", 
> line 2126, in <listcomp> 
> > >     for col in fkey['referred_columns'] 
> > > KeyError: 'id' 
> > > 
> > > -- 
> > > SQLAlchemy - 
> > > The Python SQL Toolkit and Object Relational Mapper 
> > > 
> > > http://www.sqlalchemy.org/ 
> > > 
> > > To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description. 
> > > --- 
> > > You received this message because you are subscribed to the Google 
> Groups "sqlalchemy" group. 
> > > To unsubscribe from this group and stop receiving emails from it, send 
> an email to sqlalchemy+...@googlegroups.com <javascript:>. 
> > > To post to this group, send email to sqlal...@googlegroups.com 
> <javascript:>. 
> > > Visit this group at https://groups.google.com/group/sqlalchemy. 
> > > For more options, visit https://groups.google.com/d/optout. 
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

<<attachment: Sample.zip>>

Reply via email to