Nextcloud - сбой входа пользователя в систему - Doctrine \\ DBAL \\ DBALException - Ошибка 42601 - PullRequest
0 голосов
/ 20 июня 2019

Я сейчас пытаюсь установить nc16 (16.0.0.1) на сервер Centos 7 с Apache, PostgreSQL и PHP 7.2.19.Установка работала до тех пор, пока пользователь с правами администратора создан и может войти в систему.

Теперь я создал новую группу пользователей и нового пользователя "user" для использования без прав администратора.Кажется, тоже работает.

Когда я пытаюсь войти в систему как новый пользователь, все, что у меня есть, это «Внутренняя ошибка сервера».Журнал рассказывает о проблеме, связанной с БД:

{
  "reqId": "XQtjdz6@ZzXEMrXsLfs-vgAAAAE",
  "level": 3,
  "time": "2019-06-20T10:44:07+00:00",
  "remoteAddr": "x.y.z.a",
  "user": "...",
  "app": "index",
  "method": "GET",
  "url": "/index.php/apps/files/",
  "message": {
    "Exception": "Doctrine\\DBAL\\Exception\\SyntaxErrorException",
    "Message": "An exception occurred while executing 'INSERT INTO \"oc_file_locks\" (\"key\", \"lock\", \"ttl\") VALUES(?, ?, ?) ON CONFLICT DO NOTHING' with params [\"files\\/bc95cece8ec382e86defaa1ca64de62c\", -1, 1561031047]:\n\nSQLSTATE[42601]: Syntax error: 7 FEHLER:  Syntaxfehler bei »ON«\nLINE 1: ..._locks\" (\"key\", \"lock\", \"ttl\") VALUES($1, $2, $3) ON CONFLIC...\n                                                             ^",
    "Code": 0,
    "Trace": [
      {
        "file": "/var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php",
        "line": 184,
        "function": "convertException",
        "class": "Doctrine\\DBAL\\Driver\\AbstractPostgreSQLDriver",
        "type": "->",
        "args": [
          "An exception occurred while executing 'INSERT INTO \"oc_file_locks\" (\"key\", \"lock\", \"ttl\") VALUES(?, ?, ?) ON CONFLICT DO NOTHING' with params [\"files\\/bc95cece8ec382e86defaa1ca64de62c\", -1, 1561031047]:\n\nSQLSTATE[42601]: Syntax error: 7 FEHLER:  Syntaxfehler bei »ON«\nLINE 1: ..._locks\" (\"key\", \"lock\", \"ttl\") VALUES($1, $2, $3) ON CONFLIC...\n                                                             ^",
          {
            "errorInfo": [
              "42601",
              7,
              "FEHLER:  Syntaxfehler bei »ON«\nLINE 1: ..._locks\" (\"key\", \"lock\", \"ttl\") VALUES($1, $2, $3) ON CONFLIC...\n                                                             ^"
            ],
            "__class__": "Doctrine\\DBAL\\Driver\\PDOException"
          }
        ]
      },
      {
        "file": "/var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php",
        "line": 158,
        "function": "wrapException",
        "class": "Doctrine\\DBAL\\DBALException",
        "type": "::",
        "args": [
          {
            "__class__": "Doctrine\\DBAL\\Driver\\PDOPgSql\\Driver"
          },
          {
            "errorInfo": [
              "42601",
              7,
              "FEHLER:  Syntaxfehler bei »ON«\nLINE 1: ..._locks\" (\"key\", \"lock\", \"ttl\") VALUES($1, $2, $3) ON CONFLIC...\n                                                             ^"
            ],
            "__class__": "Doctrine\\DBAL\\Driver\\PDOException"
          },
          "An exception occurred while executing 'INSERT INTO \"oc_file_locks\" (\"key\", \"lock\", \"ttl\") VALUES(?, ?, ?) ON CONFLICT DO NOTHING' with params [\"files\\/bc95cece8ec382e86defaa1ca64de62c\", -1, 1561031047]:\n\nSQLSTATE[42601]: Syntax error: 7 FEHLER:  Syntaxfehler bei »ON«\nLINE 1: ..._locks\" (\"key\", \"lock\", \"ttl\") VALUES($1, $2, $3) ON CONFLIC...\n                                                             ^"
        ]
      },
      {
        "file": "/var/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php",
        "line": 1088,
        "function": "driverExceptionDuringQuery",
        "class": "Doctrine\\DBAL\\DBALException",
        "type": "::",
        "args": [
          {
            "__class__": "Doctrine\\DBAL\\Driver\\PDOPgSql\\Driver"
          },
          {
            "errorInfo": [
              "42601",
              7,
              "FEHLER:  Syntaxfehler bei »ON«\nLINE 1: ..._locks\" (\"key\", \"lock\", \"ttl\") VALUES($1, $2, $3) ON CONFLIC...\n                                                             ^"
            ],
            "__class__": "Doctrine\\DBAL\\Driver\\PDOException"
          },
          "INSERT INTO \"oc_file_locks\" (\"key\", \"lock\", \"ttl\") VALUES(?, ?, ?) ON CONFLICT DO NOTHING",
          {
            "1": "files/bc95cece8ec382e86defaa1ca64de62c",
            "2": -1,
            "3": 1561031047
          }
        ]
      },
      {
        "file": "/var/www/nextcloud/lib/private/DB/Connection.php",
        "line": 216,
        "function": "executeUpdate",
        "class": "Doctrine\\DBAL\\Connection",
        "type": "->",
        "args": [
          "INSERT INTO \"oc_file_locks\" (\"key\", \"lock\", \"ttl\") VALUES(?, ?, ?) ON CONFLICT DO NOTHING",
          [
            "files/bc95cece8ec382e86defaa1ca64de62c",
            -1,
            1561031047
          ],
          [
            2,
            2,
            2
          ]
        ]
      },

(вырезать Stacktrace, я надеюсь, что я не вырезал важную информацию - пожалуйста, сообщите, если я сделал ...)

Уже пыталсяудалите и заново создайте пользователя.

Я еще не пытался использовать MySQL - я был бы рад, если бы вместо этого мог использовать PostgreSQL, поскольку он уже настроен и работает на сервере, обслуживая различные веб-приложения.

1 Ответ

0 голосов
/ 21 июня 2019

Нашел сам:

Ошибка была вызвана некоторыми операторами SQL (ON CONFLICT), для которых требуется версия PostgreSLQ> = 9,5 (см. https://stackoverflow.com/a/40327552 и https://github.com/nextcloud/server/issues/15441). В Centos 7 установлен PostgreSQL 9.2.24. Итак, я полагаю, что Nextcloud 16 не будет установлен на коробку Centos 7 с postgres по умолчанию в качестве базы данных db.

Решения: - Используйте MariaDB / MySQL (я предполагаю, что это должно работать, сам не проверял); - Обновите PostgresSQL до более новой версии (протестировано, работает для меня).

Чтобы обновить PostgreSQL до 9.6, я выполнил шаги, предложенные Алтином Укшини в его блоге . Обратите внимание : если вы использовали другую локаль для старого кластера postgres (как я это сделал), потребуется еще один шаг (см. Пятый комментарий - Ларри О'Нил - чтобы Запись в блоге Altins)!

До шаг 4: /usr/pgsql-9.6/bin/postgresql96-setup initdb, вам нужно установить необходимый языковой стандарт с помощью переменной env PGSETUP_INITDB_OPTIONS. В моем случае:

export PGSETUP_INITDB_OPTIONS=' --locale=de_DE.UTF-8'
...