When the "Overwrite existing values" option is set to "always store data from attributes (overwrite user fields that already have data)." the user is properly created, but if they log out and log in again, there is an SQL error.
It seems to be trying to insert a new database record, instead of updating the existing record. I'm mapping a CAS attribute to the username field, for example "foo". For some reason, if I'm mapping an email field to the username, that works fine.
Drupal\Core\Database\IntegrityConstraintViolationException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'foo-en' for key 'user__name': INSERT INTO {users_field_data} (uid, langcode, preferred_langcode, preferred_admin_langcode, name, pass, mail, timezone, status, created, changed, access, login, init, default_langcode) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14); Array ( [:db_insert_placeholder_0] => 30 [:db_insert_placeholder_1] => en [:db_insert_placeholder_2] => en [:db_insert_placeholder_3] => [:db_insert_placeholder_4] => foo [:db_insert_placeholder_5] => $S$EZVGU4cImHxiQQdQ6brYFeN2T09GZs5CHLTTGmud0Xnl2e5O6Tsj [:db_insert_placeholder_6] => user@example.com [:db_insert_placeholder_7] => America/New_York [:db_insert_placeholder_8] => 1 [:db_insert_placeholder_9] => 1465582023 [:db_insert_placeholder_10] => 1465582023 [:db_insert_placeholder_11] => 0 [:db_insert_placeholder_12] => 0 [:db_insert_placeholder_13] => [:db_insert_placeholder_14] => 1 ) in Drupal\Core\Database\Connection->handleQueryException() (line 668 of /var/www/drupal/core/lib/Drupal/Core/Database/Connection.php).
Drupal\Core\Entity\EntityStorageException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'foo-en' for key 'user__name': INSERT INTO {users_field_data} (uid, langcode, preferred_langcode, preferred_admin_langcode, name, pass, mail, timezone, status, created, changed, access, login, init, default_langcode) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14); Array ( [:db_insert_placeholder_0] => 30 [:db_insert_placeholder_1] => en [:db_insert_placeholder_2] => en [:db_insert_placeholder_3] => [:db_insert_placeholder_4] => foo [:db_insert_placeholder_5] => $S$EZVGU4cImHxiQQdQ6brYFeN2T09GZs5CHLTTGmud0Xnl2e5O6Tsj [:db_insert_placeholder_6] => user@example.com [:db_insert_placeholder_7] => America/New_York [:db_insert_placeholder_8] => 1 [:db_insert_placeholder_9] => 1465582023 [:db_insert_placeholder_10] => 1465582023 [:db_insert_placeholder_11] => 0 [:db_insert_placeholder_12] => 0 [:db_insert_placeholder_13] => [:db_insert_placeholder_14] => 1 ) in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() (line 756 of /var/www/drupal/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php).
However, if the "Overwrite existing values" option is set to "only store data from attributes for fields that are empty (don't overwrite user fields that already have data)" then the username is not set properly on the first user login. Instead of being set to "foo" it is set to the email address.
Comments
Comment #2
lolcode commentedWe are seeing the same issue on our setup.
Comment #3
bkosborneI cannot reproduce this. Can either of you provide more detail, like more specific steps to reproduce? When I just tried, I was able to set things up so an attribute is mapped to the username. The user was able to log out and log back in w/o the SQL error.
Comment #4
bkosborne