mirror of
https://github.com/nextcloud/documentation.git
synced 2025-08-20 14:15:54 +00:00
docs(admin): Clarify DB conversion steps and command usage (#11584)
Signed-off-by: Josh <josh.t.richards@gmail.com> Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
This commit is contained in:
@ -11,37 +11,72 @@ multiple-user production servers.
|
||||
Run the conversion
|
||||
------------------
|
||||
|
||||
First set up the new database, here called "new_db_name".
|
||||
In Nextcloud root folder call
|
||||
Conversion consists of two steps:
|
||||
|
||||
1. Establishing the target database (including its credentials)
|
||||
2. Triggering the conversion tool which migrates the contents of the existing database to the target database
|
||||
|
||||
Establishing the target database
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
First create up the target (new) database (along with its associated username and password) by following the manual database configuration instructions for your chosen target database type:
|
||||
|
||||
* :ref:`db-config-mysql-label`
|
||||
* :ref:`db-config-postgresql-label`
|
||||
|
||||
Since the above db instructions uses the database name ``nextcloud`` for the newly created database we will do so here for consistency, but you are free to use whatever database name you prefer. Use
|
||||
the database name, database username, and database password you specified when creating the new database.
|
||||
|
||||
Triggering the conversion
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The ``occ db:convert-type`` command handles all the tasks of the conversion. The following are the parameters available:
|
||||
|
||||
::
|
||||
|
||||
php occ db:convert-type [options] type username hostname database
|
||||
|
||||
The Options
|
||||
``type`` should be the target database type. The same values are available here as for the ``config.php`` ``dbtype`` parameter. It should be one of: ``mysql`` for MariaDB/MySQL,
|
||||
``pgsql`` for PostgresSQL, or ``oci`` for Oracle.
|
||||
|
||||
* ``--port="3306"`` the database port (optional)
|
||||
The options:
|
||||
|
||||
* ``--port="3306"`` the database port (optional) [defaults to "3306"]
|
||||
* ``--password="mysql_user_password"`` password for the new database. If omitted the tool will ask you (optional)
|
||||
* ``--clear-schema`` clear schema (optional)
|
||||
* ``--all-apps`` by default, tables for enabled apps are converted, use to convert also tables of deactivated apps (optional)
|
||||
* ``-n, --no-interaction`` do not ask any interactive question
|
||||
|
||||
*Note:* The converter searches for apps in your configured app folders and uses
|
||||
the schema definitions in the apps to create the new table. So tables of removed
|
||||
apps will not be converted even with option ``--all-apps``
|
||||
.. note:: The conversion tool searches for apps in your configured app folders and uses
|
||||
the schema (table) definitions in the apps to create the new tables. Any tables that still exist for removed
|
||||
apps will not be converted (even with option ``--all-apps``).
|
||||
|
||||
For example
|
||||
Let's convert our existing (functioning) sqlite3 installation to be MariaDB/MySQL based:
|
||||
|
||||
::
|
||||
|
||||
php occ db:convert-type --all-apps mysql oc_mysql_user 127.0.0.1 new_db_name
|
||||
php occ db:convert-type --password="<password>" --port="3306" --all-apps mysql <username> <hostname> nextcloud
|
||||
|
||||
To successfully proceed with the conversion, you must type ``yes`` when prompted
|
||||
with the question ``Continue with the conversion?``
|
||||
.. note:: It was unnecessary to specify the port in this example because ``3306`` is already the default. We did so
|
||||
merely for demonstration purposes and completeness in case the reader is using a non-standard port on their target
|
||||
database server.
|
||||
|
||||
On success the converter will automatically configure the new database in your
|
||||
Nextcloud config ``config.php``.
|
||||
|
||||
If you are converting to a MySQL/MariaDB database, you will also want to set ``mysql.utf8mb4`` parameter to true in your ``config.php``:
|
||||
|
||||
::
|
||||
|
||||
php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
|
||||
|
||||
If you like, you can view the changes that were made by looking for the ``db*`` parameters in your ``config.php`` (you could also use this command before
|
||||
doing the conversion to compare your configuration before/after):
|
||||
|
||||
::
|
||||
|
||||
grep db config/config.php
|
||||
|
||||
Inconvertible tables
|
||||
--------------------
|
||||
|
||||
|
@ -36,6 +36,8 @@ Parameters
|
||||
----------
|
||||
For setting up Nextcloud to use any database, use the instructions in :doc:`../installation/installation_wizard`. You should not have to edit the respective values in the :file:`config/config.php`. However, in special cases (for example, if you want to connect your Nextcloud instance to a database created by a previous installation of Nextcloud), some modification might be required.
|
||||
|
||||
.. _db-config-mysql-label:
|
||||
|
||||
Configuring a MySQL or MariaDB database
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -182,6 +184,8 @@ This just covers the SSL database configuration on the Nextcloud server. First y
|
||||
|
||||
Adjust the paths to the pem files for your environment.
|
||||
|
||||
.. _db-config-postgresql-label:
|
||||
|
||||
PostgreSQL database
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
Reference in New Issue
Block a user