Pagina 1 di 1

Passaggio da db con MySQL: 4.0.30 a db con 5.0.92

Inviato: 12/10/2012, 0:24
da cicocri
Salve a tutti ragazzi, devo effettuare questo passaggio, ed ho provato in vari modi, il db (non compresso) su piattaforma MySQL: 4.0.30 è di 140Mb, l'ho salvato in 3 parti (una sola mi va in timeout in caricamento sia da phpbb che da mysql di Aruba), ripristino i 3 pezzi del database (utilizzando Modalitá di compatibilità SQL: mysql40) ma mi risulta su MySQL: 5.0.92 di ben 160 Mb, e tutto, una volta cambiato i parametri in config.php, sembra ok, invece se provo ad effettuare una risposta in un post mi viene fuori l'errore:

Codice: Seleziona tutto

SQL ERROR [ mysql4 ]

Field 'post_edit_reason' doesn't have a default value [1364]

SQL

INSERT INTO phpbb_posts (forum_id, poster_id, icon_id, poster_ip, post_time, post_approved, enable_bbcode, enable_smilies, enable_magic_url, enable_sig, post_username, post_subject, post_text, post_checksum, post_attachment, bbcode_bitfield, bbcode_uid, post_postcount, post_edit_locked, topic_id) VALUES (16, 76, 0, '87.19.32.203', 1349992465, 1, 1, 1, 1, 1, '', 'Re: Attivazione account e futuro', 'prova', '189bbbb00c5f1fb7fba9ad9285f193d1', 0, '', 'rl0160zy', 1, 0, 3857)

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysql.php
LINE: 175
CALL: dbal->sql_error()

FILE: [ROOT]/includes/functions_posting.php
LINE: 2000
CALL: dbal_mysql->sql_query()

FILE: [ROOT]/posting.php
LINE: 1134
CALL: submit_post()
Prima di perderci ulteriore tempo, cercando nel web chiedo a voi lumi.... ho cercato nel forum ma invano.
Per chiarezza:
Il forum non è stato spostato di host.
Ho provato anche effettuando backup dalla piattaforma phpbb e ripristinandole nell'altro database (sempre in 3 parti) ma stesso risultato.

Grazie mille per l'attenzione,
Cristian.

Re: Passaggio da db con MySQL: 4.0.30 a db con 5.0.92

Inviato: 12/10/2012, 6:48
da Micogian
Prima di tutto bisogna considerare che la tabella più grossa di solito è "posts".
Quando faccio un backup io lo faccio sempre in tre parti. uno per le tabelle fino a "post" esclusa", un secondo backup per quelle successive e un copio per la sola tabella "posts". A volte divido la tabella in più parti, a blocchi di records.
Mai avuto un problema.
Nel tuo INSERT c'è una incongruenza, manca il campo 'post_edit_reason' ed è questo l'errore che ti viene segnalato.
E' probabile che nella struttura della tabella il suddetto campo richieda un valore, cosa che la query non fa.
In sostanza la tabella di origne non è uguale alla tabella di destinazione, manca il campo 'post_edit_reason'

Re: Passaggio da db con MySQL: 4.0.30 a db con 5.0.92

Inviato: 12/10/2012, 21:35
da cicocri
Ti ringrazio per la risposta, ho provato anche l'importazione per metà della tabella post (con ben 41414 messaggi) ma nulla, comunque ho analizzato la tabella post ed ho trovato diverse inconguenze:

Questa la struttura:

CREATE TABLE IF NOT EXISTS `phpbb_posts` (
`post_id` mediumint(8) unsigned NOT NULL auto_increment,
`topic_id` mediumint(8) unsigned NOT NULL default '0',
`forum_id` mediumint(8) unsigned NOT NULL default '0',
`poster_id` mediumint(8) unsigned NOT NULL default '0',
`icon_id` mediumint(8) unsigned NOT NULL default '0',
`poster_ip` varchar(40) binary NOT NULL default '',
`post_time` int(11) unsigned NOT NULL default '0',
`post_approved` tinyint(1) unsigned NOT NULL default '1',
`post_reported` tinyint(1) unsigned NOT NULL default '0',
`enable_bbcode` tinyint(1) unsigned NOT NULL default '1',
`enable_smilies` tinyint(1) unsigned NOT NULL default '1',
`enable_magic_url` tinyint(1) unsigned NOT NULL default '1',
`enable_sig` tinyint(1) unsigned NOT NULL default '1',
`post_username` blob NOT NULL,
`post_subject` text NOT NULL,
`post_text` mediumtext NOT NULL,
`post_checksum` varchar(32) binary NOT NULL default '',
`post_attachment` tinyint(1) unsigned NOT NULL default '0',
`bbcode_bitfield` varchar(255) binary NOT NULL default '',
`bbcode_uid` varchar(8) binary NOT NULL default '',
`post_postcount` tinyint(1) unsigned NOT NULL default '1',
`post_edit_time` int(11) unsigned NOT NULL default '0',
`post_edit_reason` blob NOT NULL,
`post_edit_user` mediumint(8) unsigned NOT NULL default '0',
`post_edit_count` smallint(4) unsigned NOT NULL default '0',
`post_edit_locked` tinyint(1) unsigned NOT NULL default '0',

Ho rimarcato 2 campi che, nel database con vecchio mysql 4 sono colonne o vuote o ricoperte da, la prima l'userneme del "postante" la seconda vuota.
Quando ripristino il database su mysql 5 questi due colonne prendono il valore [BLOB - OB] ecco perché l'erore di sintassi sbagliata.

Ho provato ad aggingere alle due righe da:

`post_username` blob NOT NULL,
`post_edit_reason` blob NOT NULL,

A:

`post_username` blob NOT NULL, default ''
`post_edit_reason` blob NOT NULL, default ''

Ma nulla mi riporta [BLOB - OB] e non l'eventuale spazio vuoto.
Consigli?

Sicuramente ci sarà la strada di portare i valori corretti (magari sostituire i blob con `post_subject` text NOT NULL,) ma mi sorge il dubbio che dovrò ricontrollare tutto il database in tutte le sue colonne oppure c'è una utility per esportazione e importazione che mi possa risolvere il problema?

Re: Passaggio da db con MySQL: 4.0.30 a db con 5.0.92

Inviato: 12/10/2012, 22:00
da Micogian
Qui bisogna capire prima di tutto se il database originale è corretto. Fai un ripara tabelle da phpmyadmin e poi riprova a esportarlo in più parti, di 20-25000 record ciascuno.
Io ho una tabelal posts di 236000 records, a gruppi di 25000 non ho problemi, di più si.

Re: Passaggio da db con MySQL: 4.0.30 a db con 5.0.92

Inviato: 12/10/2012, 23:24
da cicocri
Riparata la tabella di origine con notevole cali di Mb, verificato buon funzionamento della stessa, carifcata nel nuovo database, purtroppo stesso problema di prima, comunque ho chiesto supporto anche ad Aruba, sai mai che gli sia già capitato.

Nel caso proverò anche una conversione da 4 a 5 tramite convertitore Db.