Installation wizard doesn't create the oc_users table before trying to access it

I’m trying to do a fresh nextcloud 17 installation on windows 10.
I’m using NGINX and php7.3.4 with postgresql11.

The problem that I have happens when I run the installation wizard, the wizard can’t finish the installation and gives me this error :
error
As you can see it tries to select from the table oc_users, which doesn’t exist yet since it did not create it. However looking at the partially created database shows that it was able to create the table oc_migrations, meaning it is able to create tables right?

I’m pretty sure I have the same issue as this user :

I’m giving the wizard a user with superuser privileges. Like him I tried both manually creating the database (and granting all the privileges to the user) and just giving the wizard the database name, letting it create the database itself. Nothing worked and it kept failing on this select from oc_users.

Here’s the postgresql log file from an attempt where I let the wizard create the database, where testcloud is the user and testcloud_db the database name :

2019-11-10 15:38:47.434 CET [14308] LOG:  instruction : SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED
2019-11-10 15:38:47.454 CET [14308] LOG:  exécute <unnamed>: SELECT "rolname" FROM "pg_roles" WHERE ("rolcreaterole" = TRUE) AND ("rolname" = $1)
2019-11-10 15:38:47.454 CET [14308] DÉTAIL:  paramùtres : $1 = 'testcloud'
2019-11-10 15:38:47.456 CET [14308] LOG:  exécute <unnamed>: SELECT "datname" FROM "pg_database" WHERE "datname" = $1
2019-11-10 15:38:47.456 CET [14308] DÉTAIL:  paramùtres : $1 = 'testcloud_db'
2019-11-10 15:38:47.457 CET [14308] LOG:  exécute <unnamed>: CREATE DATABASE testcloud_db OWNER testcloud
2019-11-10 15:38:53.979 CET [12036] LOG:  instruction : SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED
2019-11-10 15:38:54.022 CET [9724] LOG:  instruction : SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED
2019-11-10 15:38:54.043 CET [9724] LOG:  exécute <unnamed>: SELECT schema_name AS nspname
	                FROM   information_schema.schemata
	                WHERE  schema_name NOT LIKE 'pg\_%'
	                AND    schema_name != 'information_schema'
2019-11-10 15:38:54.047 CET [9724] LOG:  exécute <unnamed>: SELECT sequence_name AS relname,
	                       sequence_schema AS schemaname,
	                       minimum_value AS min_value, 
	                       increment AS increment_by
	                FROM   information_schema.sequences
	                WHERE  sequence_catalog = 'testcloud_db'
	                AND    sequence_schema NOT LIKE 'pg\_%'
	                AND    sequence_schema != 'information_schema'
2019-11-10 15:38:54.051 CET [9724] LOG:  exécute <unnamed>: SELECT quote_ident(table_name) AS table_name,
	                       table_schema AS schema_name
	                FROM   information_schema.tables
	                WHERE  table_schema NOT LIKE 'pg\_%'
	                AND    table_schema != 'information_schema'
	                AND    table_name != 'geometry_columns'
	                AND    table_name != 'spatial_ref_sys'
	                AND    table_type != 'VIEW'
2019-11-10 15:38:54.052 CET [9724] LOG:  exécute <unnamed>: SHOW search_path
2019-11-10 15:38:54.059 CET [9724] LOG:  exécute <unnamed>: SELECT schema_name AS nspname
	                FROM   information_schema.schemata
	                WHERE  schema_name NOT LIKE 'pg\_%'
	                AND    schema_name != 'information_schema'
2019-11-10 15:38:54.059 CET [9724] LOG:  exécute <unnamed>: SELECT sequence_name AS relname,
	                       sequence_schema AS schemaname,
	                       minimum_value AS min_value, 
	                       increment AS increment_by
	                FROM   information_schema.sequences
	                WHERE  sequence_catalog = 'testcloud_db'
	                AND    sequence_schema NOT LIKE 'pg\_%'
	                AND    sequence_schema != 'information_schema'
2019-11-10 15:38:54.060 CET [9724] LOG:  exécute <unnamed>: SELECT quote_ident(table_name) AS table_name,
	                       table_schema AS schema_name
	                FROM   information_schema.tables
	                WHERE  table_schema NOT LIKE 'pg\_%'
	                AND    table_schema != 'information_schema'
	                AND    table_name != 'geometry_columns'
	                AND    table_name != 'spatial_ref_sys'
	                AND    table_type != 'VIEW'
2019-11-10 15:38:54.061 CET [9724] LOG:  exécute <unnamed>: SHOW search_path
2019-11-10 15:38:54.063 CET [9724] LOG:  instruction : BEGIN
2019-11-10 15:38:54.071 CET [9724] LOG:  exécute <unnamed>: CREATE TABLE oc_migrations (app VARCHAR(255) NOT NULL, version VARCHAR(255) NOT NULL, PRIMARY KEY(app, version))
2019-11-10 15:38:54.176 CET [9724] LOG:  instruction : COMMIT
2019-11-10 15:38:54.179 CET [9724] LOG:  exécute <unnamed>: SELECT "version" FROM "oc_migrations" WHERE "app" = $1 ORDER BY "version" ASC
2019-11-10 15:38:54.179 CET [9724] DÉTAIL:  paramùtres : $1 = 'core'
2019-11-10 15:38:54.182 CET [9724] ERREUR:  la relation « oc_users » n'existe pas au caractÚre 34
2019-11-10 15:38:54.182 CET [9724] INSTRUCTION :  SELECT "uid", "displayname" FROM "oc_users" WHERE "uid_lower" = $1

As you can see at the end it creates the oc_migrations table, select something from it, and then directly tries to select something from the oc_users despite never having even tried to create it.

Here’s the end of my config.php file after the same attempt :

  'dbtype' => 'pgsql',
  'version' => '17.0.0.9',
  'overwrite.cli.url' => 'https://clearcloud',
  'dbname' => 'testcloud_db',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'dbuser' => 'testcloud',
  'dbpassword' => 'testcloud',

It looks pretty similar to the documentation, so I’m not sure the problem is here either.

If someone as an idea about what I’m doing wrong it would be greatly appreciated, as I’ve spent multiple hours trying to understand what’s going on without any success.

Windows is not supported as operating system for nextcloud server.

Do you know the reason why? Does it require the running of shell commands or something?

had encounter this issue yesterday.
The problem is due to the use of a regular expression to list the .php files present in the nextcloud/core/Migrations directory. This expression treats paths containing the ‘/’ character as a separator. On Windows, the separator is the '' character.
To correct the problem, you must modify the nextcloud/lib/private/DB/MigrationService.php file, in the findMigrations method. Replace ‘#^.+\/Version[^\/]\.php$#i’ with
‘#^.+\\Version[^\\]\.php$#i’

But you will be stuck further (the database schema is initialized but the installation process does not complete, for no reason).