"EXCEPT" keyword in MySQL query

Issue #3523 closed
DNeu created an issue

I got the following error:

File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py', line 2399 in all
  return list(self)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py', line 2516 in __iter__
  return self._execute_and_instances(context)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/orm/query.py', line 2531 in _execute_and_instances
  result = conn.execute(querycontext.statement, self._params)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py', line 914 in execute
  return meth(self, multiparams, params)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/sql/elements.py', line 323 in _execute_on_connection
  return connection._execute_clauseelement(self, multiparams, params)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py', line 1010 in _execute_clauseelement
  compiled_sql, distilled_params
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py', line 1146 in _execute_context
  context)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py', line 1341 in _handle_dbapi_exception
  exc_info
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/util/compat.py', line 199 in raise_from_cause
  reraise(type(exception), exception, tb=exc_tb)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/base.py', line 1139 in _execute_context
  context)
File '/home/adhocracy/adhocracy_buildout/eggs/SQLAlchemy-1.0.8-py2.7-linux-x86_64.egg/sqlalchemy/engine/default.py', line 450 in do_execute
  cursor.execute(statement, parameters)
File '/home/adhocracy/adhocracy_buildout/eggs/MySQL_python-1.2.5-py2.7-linux-x86_64.egg/MySQLdb/cursors.py', line 205 in execute
  self.errorhandler(self, exc, value)
File '/home/adhocracy/adhocracy_buildout/eggs/MySQL_python-1.2.5-py2.7-linux-x86_64.egg/MySQLdb/connections.py', line 36 in defaulterrorhandler
  raise errorclass, errorvalue
ProgrammingError: (_mysql_exceptions.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 'EXCEPT SELECT event.data AS event_data, event.event AS event_event, event.id AS ' at line 3") [SQL: u'SELECT anon_1.event_data AS anon_1_event_data, anon_1.event_event AS anon_1_event_event, anon_1.event_id AS anon_1_event_id, anon_1.event_time AS anon_1_event_time, anon_1.event_user_id AS anon_1_event_user_id, anon_1.event_instance_id AS anon_1_event_instance_id, user_1.locale AS user_1_locale, user_1.password AS user_1_password, user_1.email AS user_1_email, user_1.id AS user_1_id, user_1.user_name AS user_1_user_name, user_1.display_name AS user_1_display_name, user_1.bio AS user_1_bio, user_1.email_priority AS user_1_email_priority, user_1.activation_code AS user_1_activation_code, user_1.reset_code AS user_1_reset_code, user_1.create_time AS user_1_create_time, user_1.access_time AS user_1_access_time, user_1.delete_time AS user_1_delete_time, user_1.banned AS user_1_banned, user_1.no_help AS user_1_no_help, user_1.page_size AS user_1_page_size, user_1.proposal_sort_order AS user_1_proposal_sort_order, user_1.gender AS user_1_gender, user_1._is_organization AS user_1__is_organization, user_1.email_messages AS user_1_email_messages, user_1.welcome_code AS user_1_welcome_code, user_1.optional_attributes AS user_1_optional_attributes, group_1.id AS group_1_id, group_1.group_name AS group_1_group_name, group_1.code AS group_1_code, group_1.description AS group_1_description, permission_1.id AS permission_1_id, permission_1.permission_name AS permission_1_permission_name, badge_1.id AS badge_1_id, badge_1.type AS badge_1_type, badge_1.create_time AS badge_1_create_time, badge_1.title AS badge_1_title, badge_1.color AS badge_1_color, badge_1.description AS badge_1_description, badge_1.instance_id AS badge_1_instance_id, badge_1.impact AS badge_1_impact, badge_1.select_child_description AS badge_1_select_child_description, badge_1.parent_id AS badge_1_parent_id, badge_1.long_description AS badge_1_long_description, badge_1.group_id AS badge_1_group_id, badge_1.display_group AS badge_1_display_group, badge_1.visible AS badge_1_visible, badge_1.thumbnail AS badge_1_thumbnail, badge_1.behavior_proposal_sort_order AS badge_1_behavior_proposal_sort_order \nFROM (SELECT event.data AS event_data, event.event AS event_event, event.id AS event_id, event.time AS event_time, event.user_id AS event_user_id, event.instance_id AS event_instance_id \nFROM event LEFT OUTER JOIN instance ON instance.id = event.instance_id EXCEPT SELECT event.data AS event_data, event.event AS event_event, event.id AS event_id, event.time AS event_time, event.user_id AS event_user_id, event.instance_id AS event_instance_id \nFROM event LEFT OUTER JOIN instance ON instance.id = event.instance_id \nWHERE instance.hidden = true) AS anon_1 LEFT OUTER JOIN user AS user_1 ON anon_1.event_user_id = user_1.id LEFT OUTER JOIN (user_badges AS user_badges_1 INNER JOIN badge AS badge_1 ON badge_1.id = user_badges_1.badge_id AND badge_1.type IN (%s)) ON user_badges_1.user_id = user_1.id LEFT OUTER JOIN `group` AS group_1 ON group_1.id = badge_1.group_id LEFT OUTER JOIN (group_permission AS group_permission_1 INNER JOIN permission AS permission_1 ON permission_1.id = group_permission_1.permission_id) ON group_1.id = group_permission_1.group_id \nWHERE anon_1.event_event != %s AND anon_1.event_event != %s AND anon_1.event_user_id = %s ORDER BY anon_1.event_time DESC'] [parameters: ('user', 't_message_send', 't_massmessage_send', 3L)]

Comments (3)

  1. Mike Bayer repo owner

    hi, please provide a test case or any sample code of any kind, i have no idea what im looking at, thanks.

  2. Mike Bayer repo owner

    MySQL doesn't actually support EXCEPT so if the except_() construct is being used here, there's nothing surprising about that.

  3. Log in to comment