Problema per l'importazione di q2a

Sto importando un sito Question2Answer e ho seguito i passaggi indicati di seguito. Lo script non riesce a connettersi al database. Qualcuno può per favore aiutarmi con questo problema?

Ho preso riferimento da questo thread vBulletin

Installazione del server Docker

Passaggi:

  1. Ho installato Discourse seguendo la guida di 30 minuti e ha funzionato perfettamente.

  2. Sono entrato nell’app con i seguenti comandi:
    \u003e cd /var/discourse
    \u003e ./launcher enter app

  3. Ho installato MariaDB poiché non sono riuscito a installare MySQL:

\u003e apt-get update \u0026\u0026 apt-get install libmariadb-dev mariadb-server-10.3

  1. Dopo aver completato l’installazione di MariaDB, ho verificato lo stato e avviato il servizio:

\u003e sudo service mysql status
\u003e sudo service mysql start

  1. Installazione delle dipendenze

\u003e echo “gem ‘mysql2’, require: false” \u003e\u003e /var/www/discourse/Gemfile
\u003e echo “gem ‘php_serialize’, require: false” \u003e\u003e /var/www/discourse/Gemfile
\u003e cd /var/www/discourse
\u003e su discourse -c ‘bundle install --no-deployment --without test --without development --path vendor/bundle’

  1. Importazione del database

mysql -uroot -p -e ‘CREATE DATABASE q2adb’
mysql -uroot -p q2adb \u003c q2a-old-db.sql

  1. Ho esportato le seguenti variabili. Non avendo allegati, non ho esportato quella variabile specifica. Inoltre, non ho impostato una password per l’utente root.
    \u003e export DB_NAME=“q2adb”
    \u003e export DB_USER=“root”
    \u003e export DB_PW=“”
    \u003e export TABLE_PREFIX=“qa_”
    \u003e export TIMEZONE=“America/Los_Angeles”
    \u003e
    \u003e cd /var/www/discourse
    \u003e su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’

Questo è l’errore che ricevo dopo aver eseguito il comando seguente.

/var/www/discourse# su discourse -c ‘bundle exec ruby script/import_scripts/question2answer.rb’
root:@localhost richiede q2adb
Caricamento dei gruppi esistenti…
Caricamento degli utenti esistenti…
Caricamento delle categorie esistenti…
Caricamento dei post esistenti…
Caricamento degli argomenti esistenti…

Accesso negato per l’utente ‘root’@‘localhost’
Impossibile connettersi al database.

Hostname: localhost
Username: root
Password:
database: q2adb

Modifica lo script o imposta queste variabili d’ambiente:

export DB_HOST=“localhost”
export DB_NAME=“”
export DB_PW=‘password’
export DB_USER=“root”
export TABLE_PREFIX=“qa_”

Uscita.

O devi impostare una password o forse un nome host? Hai installato MySQL all’interno del contenitore?

Puoi connetterti a MySQL da riga di comando e verificare che ci siano dei dati? (Mostra le tabelle :wink:

@pfaffman

Sono all’interno del container.

Ho provato a impostare l’Hostname su localhost, ‘127.0.0.1’, ip-171-22-11-150 (questo è mostrato come hostname quando eseguo il comando > hostname) e con l’indirizzo IP effettivo del server.

Ho anche impostato la password per l’utente root. Vedo che le tabelle nel database sono state importate correttamente da q2a.

Sto saltando qualche passaggio?

Esperti di Discourse, per favore aiutatemi con questo. Al momento non so come procedere.

Grazie in anticipo per il vostro aiuto!

Il modo tradizionale per incentivare le persone a darti un aiuto extra è pagare per questo; puoi pubblicare in Marketplace indicando un budget.

Ciao alla comunità Discourse,

@sat hai già trovato una soluzione per questo?

Ho incontrato lo stesso errore mentre cercavo di migrare da vBulletin5 utilizzando la parte Docker dello stesso thread.

Ho anche installato MariaDB invece di MySQL:

apt-get update && apt-get install libmariadb-dev mariadb-server-10.3

Ho importato i miei dati SQL e riesco a connettermi al database, vedendo che le tabelle sono state create:

mysqlcheck -c vb5  -u root -p

All’inizio ho usato le credenziali di accesso predefinite (root / vuoto), e in un secondo tentativo ho impostato una password per l’utente root:

export DB_NAME="vb5"
export DB_USER="root"
export DB_PW="password1234"
export TABLE_PREFIX="vb5."
export ATTACHMENT_DIR='/vb5-attachments'
export TIMEZONE='Europe/Berlin'

cd /var/www/discourse
su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'

Non sono sicuro riguardo al TABLE_PREFIX qui. Ma tutti i nomi delle tabelle iniziano con vb5. nella mia installazione predefinita, quindi immagino che dovrebbe andare bene (ho anche provato a lasciarlo vuoto).

Tuttavia, il problema principale è che non riesco a connettermi al database MariaDB con l’utente discourse:

su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'
Caricamento gruppi esistenti...
Caricamento utenti esistenti...
Caricamento categorie esistenti...
Caricamento post esistenti...
Caricamento argomenti esistenti...
Traceback (most recent call last):
        5: from script/import_scripts/vbulletin5.rb:632:in `<main>'
        4: from script/import_scripts/vbulletin5.rb:632:in `new'
        3: from script/import_scripts/vbulletin5.rb:27:in `initialize'
        2: from script/import_scripts/vbulletin5.rb:27:in `new'
        1: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/lib/mysql2/client.rb:90:in `connect': Accesso negato per l'utente 'root'@'localhost' (Mysql2::Error)
su discourse
mysqlcheck -c vb5  -u root -p
Inserisci password: #password1234
mysqlcheck: Errore: 1698: Accesso negato per l'utente 'root'@'localhost' durante il tentativo di connessione

Ok, ora sono un passo più vicino a far funzionare tutto. Sono riuscito a collegare l’utente di Discourse.

  1. Accedi al container di Discourse come root.
  2. Connettiti al database MariaDB
mysql -u root -p
*inserisci la tua password*
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
EXIT;

Poi passa all’utente discourse e prova a connetterti al database con l’account root:

su discourse
mysql -u root -p
Inserisci password: #password1234

Dovresti vedere la shell SQL, mentre prima ricevevi un errore di accesso negato.

Ora esci dall’utente discourse e riprova a eseguire lo script di migrazione:

exit
su discourse -c 'bundle exec ruby script/import_scripts/vbulletin5.rb'

Ora lo script è in esecuzione (ma sto ricevendo un errore relativo a vBulletin5 che devo risolvere ora).