Eran Levy created AIRFLOW-2788:
----------------------------------
Summary: pymysql.err.ProgrammingError insert into log mysql table
error
Key: AIRFLOW-2788
URL: https://issues.apache.org/jira/browse/AIRFLOW-2788
Project: Apache Airflow
Issue Type: Bug
Components: utils
Affects Versions: 1.9.0
Environment: macos
Reporter: Eran Levy
Assignee: Eran Levy
Fix For: 1.9.0
Im using airflow 1.9.0 on macos, installed using:
pip install apache-airflow
Configured MySQL 5.7 as my metadata backend database server with pymysql.
airflow initdb bootstrapped the database tables successfully.
Error raised only when used mysql - didnt encounter any error while using the
default SQLite database.
Reproduce steps:
1. Run the airflow webserver
2. Open the UI and click "DAGs" in the top navigation menu
3. Click one of the available dags - example dags or your own
4. You will see an "Ooops" page with the following error:
{code:java}
[2018-07-23 13:53:35,815] ERROR in app: Exception on /admin/airflow/tree [GET]
Traceback (most recent call last):
File "/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask/app.py",
line 1988, in wsgi_app
response = self.full_dispatch_request()
File "/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask/app.py",
line 1641, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask/app.py",
line 1544, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask/app.py",
line 1639, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask/app.py",
line 1625, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask_admin/base.py",
line 69, in inner
return self._run_view(f, *args, **kwargs)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask_admin/base.py",
line 368, in _run_view
return fn(self, *args, **kwargs)
File "/Users/eranlevy/anaconda2/lib/python2.7/site-packages/flask_login.py",
line 755, in decorated_view
return func(*args, **kwargs)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/airflow/www/utils.py",
line 356, in view_func
return f(*args, **kwargs)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/airflow/www/utils.py",
line 260, in wrapper
session.commit()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 906, in commit
self.transaction.commit()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 461, in commit
self._prepare_impl()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 441, in _prepare_impl
self.session.flush()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 2171, in flush
self._flush(objects)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 2291, in _flush
transaction.rollback(_capture_exception=True)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py",
line 66, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/session.py",
line 2255, in _flush
flush_context.execute()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py",
line 389, in execute
rec.execute(self)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.py",
line 548, in execute
uow
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py",
line 181, in save_obj
mapper, table, insert)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/orm/persistence.py",
line 835, in _emit_insert_statements
execute(statement, params)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
line 945, in execute
return meth(self, multiparams, params)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/sql/elements.py",
line 263, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
line 1053, in _execute_clauseelement
compiled_sql, distilled_params
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
line 1189, in _execute_context
context)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
line 1402, in _handle_dbapi_exception
exc_info
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/compat.py",
line 203, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base.py",
line 1182, in _execute_context
context)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/default.py",
line 470, in do_execute
cursor.execute(statement, parameters)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/cursors.py",
line 170, in execute
result = self._query(query)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/cursors.py",
line 328, in _query
conn.query(q)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/connections.py",
line 516, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/connections.py",
line 727, in _read_query_result
result.read()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/connections.py",
line 1066, in read
first_packet = self.connection._read_packet()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/connections.py",
line 683, in _read_packet
packet.check_error()
File
"/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/protocol.py",
line 220, in check_error
err.raise_mysql_exception(self._data)
File "/Users/eranlevy/anaconda2/lib/python2.7/site-packages/pymysql/err.py",
line 109, in raise_mysql_exception
raise errorclass(errno, errval)
ProgrammingError: (pymysql.err.ProgrammingError) (1064, u"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 '[(\\'dag_id\\', u\\'erandag\\')]'')' at line
1") [SQL: u'INSERT INTO log (dttm, dag_id, task_id, event, execution_date,
owner, extra) VALUES (%(dttm)s, %(dag_id)s, %(task_id)s, %(event)s,
%(execution_date)s, %(owner)s, %(extra)s)'] [parameters: {'task_id': None,
'extra': "[('dag_id', u'erandag')]", 'execution_date': None, 'event': 'tree',
'owner': 'anonymous', 'dttm': datetime.datetime(2018, 7, 23, 10, 53, 35,
809796), 'dag_id': u'erandag'}]
{code}
Cant insert a new row into the "log" table. Seems like there is a problem with
adding the request arguments into the "extra" column
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)