title: 'Invalid input syntax for type inet' db error in Django app with postgres and Gunicorn+Nginx as reverse proxy
body: <p>Can you help me decipher this rather esoteric error? Everything's fine when I fire up the application, but crashes the moment I try to <code>login</code>.</p>
  
  <blockquote>
    <p>DatabaseError at /login/</p>
    
    <p>invalid input syntax for type inet: "" LINE 1: ...00101 Firefox/41.0',
    '2015-12-12 09:39:55.590036+00:00', '') </p>
    
    <p>Exception Location:
      /home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py
    in execute, line 54</p>
  </blockquote>
  
  <p>I know for a fact that the <a href="http://www.postgresql.org/docs/current/interactive/datatype-net-types.html#DATATYPE-INET" rel="nofollow">inet data type</a> accepts IPv4 and IPv6 hosts and networks (but not domain names).</p>
  
  <p>The traceback is as follows:</p>
  
  <pre><code>Traceback:
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
    187.                 response = middleware_method(request, response)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/user_sessions/middleware.py" in process_response
    46.                     request.session.save()
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/user_sessions/backends/db.py" in save
    86.                     obj.save(force_insert=must_create, using=using)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/base.py" in save
    546.                        force_update=force_update, update_fields=update_fields)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/base.py" in save_base
    650.                 result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/manager.py" in _insert
    215.         return insert_query(self.model, objs, fields, **kwargs)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/query.py" in insert_query
    1661.     return query.get_compiler(using=using).execute_sql(return_id)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
    937.             cursor.execute(sql, params)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute
    41.             return self.cursor.execute(sql, params)
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py" in execute
    58.             six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])
  File "/home/mhb11/.virtualenvs/redditpk/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py" in execute
    54.             return self.cursor.execute(query, args)
  
  Exception Type: DatabaseError at /login/
  Exception Value: invalid input syntax for type inet: ""
  LINE 1: ...00101 Firefox/41.0', '2015-12-12 09:39:55.590036+00:00', '')
  </code></pre>
  
  <p>The <strong>/login/</strong> url in urls.py is <code>url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}, name="login"),</code></p>
  
  <p>The environment is: </p>
  
  <p><strong>Django 1.5.1</strong> with a <strong>postgresql backend</strong> and resides on a Ubuntu 14.04 machine. Especially note that this error started coming after I set up <em>nginx as a reverse proxy behind gunicorn</em> (using port 80 for this set up). Things worked <strong>perfectly</strong> when I used <em>solely</em> gunicorn (and waitress, another pure python web server) on port 8080.</p>
  
  <p>/etc/nginx/sites-available/myproject:</p>
  
  <pre><code>server {
      listen 80;
      server_name example.cloudapp.net;
  
      location = /favicon.ico { access_log off; log_not_found off; }
      location /static/ {
          root /home/mhb11/folder/myproject;
      }
  
      location / {
          include proxy_params;
          proxy_pass http://unix:/home/mhb11/folder/myproject/myproject.sock;
      }
     error_page 500 502 503 504 /500.html;
     location = /500.html {
          root /home/mhb11/folder/myproject/templates/;
     }
  }
  </code></pre>
  
  <p>/etc/nginx/proxy_params:</p>
  
  <pre><code>proxy_set_header Host $http_host;
  proxy_set_header User-Agent $http_user_agent;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  </code></pre>
  
  <p>/etc/nginx/nginx.conf:</p>
  
  <pre><code>user www-data;
  worker_processes 4;
  pid /run/nginx.pid;
  
  env ON_AZURE=1;
  env awsaccesskeyid=something;
  env awssecretkey=something;
  
  events {
          worker_connections 1024;
          multi_accept on;
          use epoll;
  }
  
  http {
  
          ##
          # Basic Settings
          ##
  
          sendfile on;
          tcp_nopush on;
          tcp_nodelay on;
          keepalive_timeout 65;
          types_hash_max_size 2048;
          # server_tokens off;
  
          # server_names_hash_bucket_size 64;
          include /etc/nginx/mime.types;
          default_type application/octet-stream;
  
          ##
          # Logging Settings
          ##
  
          access_log /var/log/nginx/access.log;
          error_log /var/log/nginx/error.log;
  
          ##
          # Gzip Settings
          ##
          gzip on;
          gzip_disable "msie6";
  
          # gzip_vary on;
          # gzip_proxied any;
          # gzip_comp_level 6;
          # gzip_buffers 16 8k;
          # gzip_http_version 1.1;
          # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascrip$
  
          ##
          # nginx-naxsi config
          ##
          # Uncomment it if you installed nginx-naxsi
          ##
  
          #include /etc/nginx/naxsi_core.rules;
  
          ##
          # nginx-passenger config
          ##
          # Uncomment it if you installed nginx-passenger
          ##
  
          #passenger_root /usr;
          #passenger_ruby /usr/bin/ruby;
  
          ##
          # Virtual Host Configs
          ##
  
          include /etc/nginx/conf.d/*.conf;
          include /etc/nginx/sites-enabled/*;
  }
  
  
  #mail {
  #       # See sample authentication script at:
  #       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
  #
  #       # auth_http localhost/auth.php;
  #       # pop3_capabilities "TOP" "USER";
  #       # imap_capabilities "IMAP4rev1" "UIDPLUS";
  #
  #       server {
  #               listen     localhost:110;
  #               protocol   pop3;
  #               proxy      on;
  #       }
  #
  #       server {
  #               listen     localhost:143;
  #               protocol   imap;
  #               proxy      on;
  #       }
  #}
  </code></pre>
  
  <p>What's going on?</p>
  
  <p><em>Note: please ask me for more information in case you need it, e.g. how my gunicorn.conf and nginx.conf looks, packages installed or if you need something db related. Just ask away!</em></p>