diff --git a/ldapauth.install b/ldapauth.install
index ae2a9ad..f7f31c0 100644
--- a/ldapauth.install
+++ b/ldapauth.install
@@ -164,6 +164,13 @@ function ldapauth_schema() {
       ),
     ),
   );
+  if ($GLOBALS['db_type'] == 'pgsql') {
+    $puid_unique_fields = array('puid');
+  }
+  else {
+    $puid_unique_fields = array(array('puid', 255)); // MySQL limit
+  }
+
   $schema['ldapauth_users'] = array(
     'description' => 'Stores information about ldap authenticated users.',
     'fields' => array(
@@ -207,7 +214,7 @@ function ldapauth_schema() {
     'primary key' => array('luid'),
     'unique keys' => array(
       'uid' => array('uid'),
-      'puid_uniq' => array(array('puid', 255)),  // MySQL limit
+      'puid_uniq' => $puid_unique_fields,  // MySQL limit
     ),
     'indexes' => array(
       'puid_idx' => array(array('puid', 255)),  // MySQL limit
@@ -338,6 +345,13 @@ function ldapauth_update_6006() {
     return $ret;
   }
 
+  if ($GLOBALS['db_type'] == 'pgsql') {
+    $puid_unique_fields = array('puid');
+  }
+  else {
+    $puid_unique_fields = array(array('puid', 255)); // MySQL limit
+  }
+
   $table = array(
     'description' => 'Stores information about ldap authenticated users.',
     'fields' => array(
@@ -381,7 +395,7 @@ function ldapauth_update_6006() {
     'primary key' => array('luid'),
     'unique keys' => array(
       'uid' => array('uid'),
-      'puid_uniq' => array(array('puid', 255)),  // MySQL limit
+      'puid_uniq' => $puid_unique_fields,
     ),
     'indexes' => array(
       'puid_idx' => array(array('puid', 255)),  // MySQL limit
