title: AWS Lambda RDS MySQL DB Connection InterfaceError
body: <p>When I try to connect to AWS RDS (MySQL), most of the time I receive an <code>InterfaceError</code>. When I edit the Lambda code and re-run, it will work fine the first time, but then the same error occurs.</p>
  
  <p>My code:</p>
  
  <pre><code>import sys
  import logging
  import pymysql
  import json
  import traceback
  rds_host  = "*****.rds.amazonaws.com"
  name = "*****"
  password = "****"
  db_name = "myDB"
  logger = logging.getLogger()
  logger.setLevel(logging.INFO)
  try:
      conn = pymysql.connect(rds_host, user=name, passwd=password, db=db_name, connect_timeout=5)
  except:
      logger.error("ERROR: Unexpected error: Could not connect to MySql instance.")
      sys.exit()
  logger.info("SUCCESS: Connection to RDS mysql instance succeeded")
  def handler(event, context):
      sub = event['sub']
      username = event['username']
      givenname = event['givenname']
      isAdmin = event['isAdmin']
      print (sub)
      print (username)
      print (givenname)
      print (isAdmin)
      data = {}
  
      cur = conn.cursor()
      try:
          cmd = "SELECT AuthState FROM UserInfo WHERE UserName=" + "\'" + username + "\'"
          rowCnt = cur.execute(cmd)
          print (cmd)
      except:
          print("ERROR: DB Query Execution failed.")
          traceback.print_exc()
          data['errorMessage'] = 'Internal server error'
          response = {}
          response['statusCode'] = 500
          response['body'] =  data
          return response
      if rowCnt &lt;= 0:
          print (username)
          data['errorMessage'] = 'No User Name Found'
          response = {}
          response['statusCode'] = 400
          response['body'] =  data
          conn.close()
          return response
      for row in cur:
          print row[0]
          if int(row[0]) == 0:#NOT_AUTHORIZED
              ret = "NOT_AUTHORIZED"
          elif int(row[0]) == 1:#PENDING
               ret = "PENDING"
          elif int(row[0]) == 2:#AUTHORIZED
              ret = "AUTHORIZED"
          else:#BLOCKED
              ret = "BLOCKED"
      data['state'] = ret
      response = {}
      response['statusCode'] = 200
      response['body'] =  data
      conn.close()
      return response
  </code></pre>
  
  <p>The stacktrace:</p>
  
  
  
  <pre class="lang-none prettyprint-override"><code>Traceback (most recent call last):
    File "/var/task/app.py", line 37, in handler
    File "/var/task/pymysql/connections.py", line 851, in query
      self._execute_command(COMMAND.COM_QUERY, sql)
    File "/var/task/pymysql/connections.py", line 1067, in _execute_command
      raise err.InterfaceError("(0, '')")
  InterfaceError: (0, '')
  </code></pre>