title: Rails: Record Exists Rollback when Record doesn't exist
body: <p>I'm new to rails.  I'm trying to create a User and am getting a ROLLBACK while checking for uniqueness.  I am working specifically in the development database.  I can see the queried user on my index page, so the db's do match.</p>
  
  <pre><code>Started POST "/users" for 127.0.0.1 at 2015-01-01 17:02:17 -0600
  Processing by UsersController#create as HTML
    Parameters: {"utf8"=&gt;"✓", "authenticity_token"=&gt;"&lt;TOKEN THAT MATCHES THE FORM&gt;", "user"=&gt;{"first_name"=&gt;"First", "last_name"=&gt;"Test", "username"=&gt;"test1", "email"=&gt;"test1@self.com", "password"=&gt;"[FILTERED]", "password_confirmation"=&gt;"[FILTERED]"}, "commit"=&gt;"Create User"}
     (0.2ms)  BEGIN
    User Exists (0.4ms)  SELECT  1 AS one FROM `users` WHERE `users`.`username` = BINARY 'test1' LIMIT 1
    User Exists (0.2ms)  SELECT  1 AS one FROM `users` WHERE `users`.`email` = BINARY 'test1@self.com' LIMIT 1
     (0.1ms)  ROLLBACK
    Rendered users/_form.html.erb (1.9ms)
    Rendered users/new.html.erb within layouts/application (3.8ms)
  Completed 200 OK in 178ms (Views: 56.3ms | ActiveRecord: 0.9ms)
  </code></pre>
  
  <p>So I check my table to see if it does in fact exist.</p>
  
  <pre><code>mysql&gt; SELECT * FROM users;
  +----+------------+---------------+------------------+------------+--------------------+---------------------+---------------------+
  | id | first_name | last_name     | email            | username   | password_digest    | created_at          | updated_at          |
  +----+------------+---------------+------------------+------------+--------------------+---------------------+---------------------+
  |  1 | Initial    | User          | test0@self.com   | test0      | &lt;SOME LONG DIGEST&gt; | 2015-01-01 03:56:39 | 2015-01-01 03:56:39 |
  +----+------------+---------------+------------------+------------+--------------------+---------------------+---------------------+
  1 row in set (0.00 sec)
  </code></pre>
  
  <p>If I run the commands as Rails does:</p>
  
  <pre><code>mysql&gt; SELECT  1 AS one FROM `users` WHERE `users`.`username` = BINARY 'test1' LIMIT 1;
  Empty set (0.00 sec)
  
  mysql&gt; SELECT  1 AS one FROM `users` WHERE `users`.`email` = BINARY 'test1@self.com' LIMIT 1;
  Empty set (0.00 sec)
  </code></pre>
  
  <p>It doesn't.  Why is this happening, and is there a good way to see what's actually going on?  </p>