Non vorrei dirlo ma si può copiare anche più di un rigo per volta
Ciao, certo che è possibile copiare più di un rigo per volta nel database, ci mancherebbe! Con 'ctrl+o' all'interno di un database può pure selezionare il file sql da importare all'interno del database
Non abbiamo detto infatti che non è possibile copiare un singolo rigo per volta, ma che il trasferimento degli account dal server1 al server2 richiede molto tempo per evitare bug o problemi, come duplicazione di item e altri fattori che potrebbero presentarsi.
Quale sarebbe la funzione di un database, se non permette di essere interrogato?
Cosa significa quanto intendiamo che richiede tempo? Facciamo un esempio pratico per spiegare meglio cosa comporta il trasferimento degli account.
Ipotizziamo che il personaggio del [GF]Demons non esista sul server2, ma sia un account solamente presente sul server1.
In questo caso, abbiamo bisogno di controllare circa 3 tabelle: player/player, account/account, player/item, i nomi corrispondono a database/nometabella
Ipotizziamo che il personaggio [GF]Demons decida di contattare uno staffer, per il trasferimento dell'account e la richiesta venga accettato, queste saranno una piccolissima parte delle procedure che dobbiamo fare:
1) Aprire il database del server1 player/player e mandare la query:
SELECT * FROM `player` where name='[GF]Demons';
Dove possiamo principalmente 3 cose:
id, account id(il quale permette di ricondurre il personaggio al nome del account con il quale si entra in gioco), nome del giocatore
2) Apriamo il database del server2 player/player e vediamo:
id,account id occupati da un altro giocatore
Questo significa che bisognerà assegnare un nuovo id al giocatore che verrà trasferito per il giocatore, e un nuovo id account che ovviamente sarà occupato da quello già esistente.
Stiamo quindi modificando due dati essenziali:
id del giocatore
account_id del giocatore
Dato che l'id, account_id del giocatore è diverso, renderebbe non possibile copiare più rows di più pg
Tuttavia, per copiare più rows, potremmo inviare una piccola query, per rendere possibile questa procedura, sarebbe sufficiente bloccare le registrazioni per un paio di minuti, controllare il numero di giocatori, account del server2, mandare una query del seguente tipo:
update player set id=id*1000;
Dove questo id*1000 (esempio) dovrebbe superare il limite dell'ultimo personaggio creato nel server2.
La medesima procedura, potrebbe essere fatta per gli id_account e risolviamo i problemi relativi a copy and paste, semplice no?
Da questo momento, possiamo iniziare a introdurre tutte le variabili che renderebbero inutili il ragionamento fatto prima, i primi esempi potrebbero essere rappresentati dalle email utilizzati in fase di registrazione, dai nomi degli account utilizzati dai personaggi che sono i medesimi tra i due server (volendo potremmo modificare anche questi dati con l'invio di alcune query)
Il problema è che non esistono solamente queste due tabelle, infatti esistono altre variabili, un primo esempio potrebbe essere fatto dalla tabella item, ipotizziamo di dover prendere gli item del pg [GF]Demons quindi:
3) Apriamo il database del server1 player/item e mandiamo questa piccola query:
select * from item where id=1
1 è l'id che corrisponde al nostro pg in questione, che abbiamo preso prima con il punto 1.
In questo caso otteniamo dei valori molto importanti id, owner_id, window(il quale potrebbe comprendere valori come 'INVENTORY','EQUIPMENT','SAFEBOX','MALL','DRAGON_SOUL_INVENTORY','BELT_INVENTORY','GROUND') pos,count,vnum e notiamo che tali valori esistono già nel server2, abbiamo quindi bisogno di riportare tali valori e collegarli agli id_Account, id dei personaggi modificati precedentemente, anche questo, è una delle fasi che richiede analisi e modifiche del risultato della query sopra esposta.
Altri fattori che ovviamente influiscono nel trasferimento, sono per esempio le gilde, i matrimoni, i nomi dei cavalli, i negozi offline e moltissime altre cosa ancora.
Tutti questi sono piccolissimi esempi, per spiegare l'idea.
Ma tra i due database, ci sono tantissimi altri fattori, tra cui numerosi field e campi non presenti, oppure sistemi come il reborn che hanno variato il livello del giocatore e non rendono semplice il passaggio di informazioni e ovviamente non possibile con un semplice copy and paste.
Potremmo fare anche una migrazione completa dei dati solamente con l'uso del linguaggio sql, non è impossibile, ma questo implicherebbe la richiesta di mettere offline i due server, con l'offerta di un disservizio e non è una delle intenzioni che abbiamo per ora in mente.
Ovviamente nel messaggio avrò tralasciato decine di fattori, superflui per esprimere il valore del messaggio
4) possiamo continuare per mostrare come funziona una migrazione degli account dal server1 al server2, la domanda è se ciò è davvero necessario?
Il nostro scopo è quello di soddisfare le numerosissime richieste che abbiamo ricevuto sull'unione di due server, con l'obbiettivo di raggiungere i valori sopra esposti.
Inoltre non abbiamo intenzione di chiudere il server1, ma solamente offrire questa possibilità a chi può esserne interessato a offrire il trasferimento dell'account.
Le auguro una buona continuazione,
lo staff di Demons!