Soucis de BDD ?

Bonjour,

La BDD a été importée,
Mais suite a un soucis peut on changer la version de MySQL ?

Je lance mon forum : forum.esthauto.com et :

Server Error
Server Error

Mysqli statement execute error : Field 'deferred_id' doesn't have a default value

Zend_Db_Statement_Mysqli->_execute() in Zend/Db/Statement.php at line 297
Zend_Db_Statement->execute() in Zend/Db/Adapter/Abstract.php at line 479
Zend_Db_Adapter_Abstract->query() in XenForo/Model/Deferred.php at line 139
XenForo_Model_Deferred->defer() in XenForo/Application.php at line 1458
XenForo_Application::defer() in XenForo/Install/Model/Install.php at line 420
XenForo_Install_Model_Install->insertDeferredRebuild() in XenForo/Install/Controller/Upgrade.php at line 214
XenForo_Install_Controller_Upgrade->actionRebuild() in XenForo/FrontController.php at line 351
XenForo_FrontController->dispatch() in XenForo/FrontController.php at line 134
XenForo_FrontController->run() in /home/esthautocm/www/forum/install/index.php at line 18


Le support de XF me dit de regarder du côté d'ovh . . .

Apparemment c'est un soucis du coté d'OVH.
Je viens d'essayer chez 1and1 et ça passe. Idem chez Yulpa. J'ai remis le forum dessus.

"Je pense que cette erreur viens de votre hébergeur, il faut que celui-ci augmente ceci : table_definition_cache MySQL et / ou des valeurs de table_open_cache pour aider à résoudre le problème"

ils disent qu'il faut changer ma veraion php vers la php7.x.x.
J'ai mis 7.1 : idem . . .

Je les recontacte ils me disent de voir avec OVH . . .

Bonjour,

l'erreur SQL fait plutôt penser à un problème dans la table qu'au niveau de la configuration du serveur.

Comme par exemple un champ "deferred_id" qui n'a pas de valeur par défaut dans la table.

Où alors votre version PHP qui est pas bonne (vous l'avez configuré comment le .ovhconfig ?).

Cordialement, janus57

OVH config je n'ai pas touché.
Il est avec la bonne version de PHP.

Je bataille bizarrement alors que je viens de recopier sans soucis chez YULPA.

Aurais je zappé (encore) un truc ?

Je pense que je vais résilier mon hébergement ce sera plus simple :slight_smile:

Bonjour,

ne connaissant pas xenforo ni vos actions impossible à dire.

En tout cas on dirais bien un problème de BDD que de version php/configuration mysql car je pense pas que vous êtes le seul chez OVH a utiliser xenforo.

Note : si c'est pour abandonner pourquoi avoir voulu passer chez OVH (simple question car là ça fait beaucoup pour au finale abandonner).

Cordialement, janus57

Abandonner car je bataille depuis cet après midi sur OVH.

Et le support de XENFORO me dit que le soucis est de l'hébergement.
Je viens de :
1. Effacer la BDD.
2. Recréer la BDD.
3. Activer la BDD avec SSH.
4. Je lance le forum : ça plante.

Je viens de retenter avec Yulpa ça passe.

OK je dois zapper certainement un truc mais quoi ?
J'ai cherché sur le web sans rien trouver à mon erreur.
Je suis conscient que l'erreur doit venir de moi (et pas de OVH comme XF le dit). Eux dès qu'il y a un soucis c'est la faute de l'hébergeur.

Les fichiers sont ok, config.php aussi.
En général on doit éditer quoi d'autre ? Activer quoi d'autre ?

Est-ce que cela peut venir d'une erreur de copie de ma BDD ?

Merci.

Le backup de la base de données réinsérer est bien complet ?
Est ce exactement le même fichier ou une autre sauvegarde qui a été upload écrit chez 1&1 par exemple ?

Complet je ne sais pas car ma connexion est galère, mais c'est le même oui.

N'existe t'il pas une solution de déménagement ?


4. Je lance le forum : ça plante.

Message d'erreur ?

Server Error
Server Error

Mysqli statement execute error : Field 'deferred_id' doesn't have a default value

Zend_Db_Statement_Mysqli->_execute() in Zend/Db/Statement.php at line 297
Zend_Db_Statement->execute() in Zend/Db/Adapter/Abstract.php at line 479
Zend_Db_Adapter_Abstract->query() in XenForo/Model/Deferred.php at line 139
XenForo_Model_Deferred->defer() in XenForo/Application.php at line 1458
XenForo_Application::defer() in XenForo/Install/Model/Install.php at line 420
XenForo_Install_Model_Install->insertDeferredRebuild() in XenForo/Install/Controller/Upgrade.php at line 214
XenForo_Install_Controller_Upgrade->actionRebuild() in XenForo/FrontController.php at line 351
XenForo_FrontController->dispatch() in XenForo/FrontController.php at line 134
XenForo_FrontController->run() in /home/esthautocm/www/forum/install/index.php at line 18

Tester –> https://www.wordetweb.com/word-et-web/OVH-Tester-une-base-de-donnees-avec-un-script-mysqli-FR.htm OVH - Test de Base de Données via un script mysqli

Merci je vais voir d'une meilleure connexion.
Merci pour ce script. Je l'utilise comment exactement ?


Mysqli statement execute error : Field 'deferred_id' doesn't have a default value

Salut,
ce champs là est dans la table xf_deferred, effectivement n'y a pas de valeur par défaut de défini pour ce champs.
Il ne faut pas forcément en mettre. Il faut, je pense, vérifier si il est bien réglé en AUTO_INCREMENT
Pour le vérifier :
- Connectes toi à phpmyadmin
- Sélectionnes la table xf_deferred et vas sur l'onglet "Structure"
- Regardes sur la ligne du champs deferred_id si tu as bien AUTO_INCREMENT dans la colonne extra. Si ce n'est pas cas ajoute le :slight_smile:
A+

Bonjour,

Je ne connais pas non plus xenforo, mais voici quelques idées…

L'erreur "Field 'deferred_id' doesn't have a default value" est remontée lors d'un insert/update en base de données, par MySQL.

* OVH a peut-être une version récente de MySQL (tu es sur une MySQL 5.7 ?), qui active un mode strict par défaut, et bloque l'insertion car le code de ta version de xenforo ne serait plus compatible avec ce mode strict.
* Même si deferred_id est en AUTO_INCREMENT, l'erreur peut se produire dans ce cas, si l'insert est par exemple '' au lieu de null.
Par exemple un
`INSERT INTO xf_deferred (deferred_id,…) VALUES ('', …)`
ne passera pas en mode strict.

Tu pourrais voir ta version de MySQL : `select version();`

Est-ce que `select @@sql_mode;`te retourne quelque chose ?

Peux-tu récupérer la requête qui est en échec ("INSERT INTO …") ?

Bonjour,

Merci pour l'aide à tous.
@Buddy ; @romainovh ; @BorisM ; @Gaston_Phone ; @janus57

Ma version selon la requête : 5.5.49-0+deb7u1-log
La requête select @@sql_mode; ne me rapporte rien.

C'est problématique les grosses BDD.
Je la sauvegarde mais peut être y a t'il des manques lors de cette sauvegarde ?
Parfois PHPMYADMIN renvoie l'erreur 503 mais continue à sauvegarder ? Une piste ?

Oui @BorisM j'ai bien cela.


Parfois PHPMYADMIN renvoie l'erreur 503 mais continue à sauvegarder ?


C'est peu probable...
Pourquoi tu ne sauvegardes pas la base de données via php directement sur le serveur ? Et après tu récupères le backup avec Filezilla ?

Je n'arrive pas à faire cela.
PhpMyAdmin ne me propose que de l'exporter vers mon DD.
Pas vers le serveur.
C'est la meilleure façon selon toi ?

La meilleure pas forcément mais de toute façon quand on donne des conseils (la sauvegarder en 2 ou 3 fois pour éviter les erreurs) tu ne les suis pas..
https://www.wordetweb.com/word-et-web/OVH-Sauvegarder-Restaurer-une-base-de-donnees-via-un-script-FR.htm
ou sinon si tu veux un script pour sauvegarde la base via php, le voici

date_default_timezone_set('UTC');

/* backup the db OR just a table /
function backup_tables($host, $user, $pass, $name, $tables = '
')
{
$return="";
$link = mysqli_connect($host, $user, $pass);
mysqli_select_db($link, $name);

//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysqli_query($link,'SHOW TABLES');
while($row = mysqli_fetch_row($result))
{
$tables = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);
}

//cycle through
foreach($tables as $table)
{
$result = mysqli_query($link,'SELECT * FROM '.$table);
$num_fields = mysqli_num_fields($result);

$return.= 'DROP TABLE IF EXISTS '.$table.';';
$row2 = mysqli_fetch_row(mysqli_query($link,'SHOW CREATE TABLE `'.$table.'`'));
$return.= "\n\n".$row2[1].";\n\n";

while($row = mysqli_fetch_row( $result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = preg_replace("#\n#", "\n", $row[$j]);
if (isset($row[$j]))
{
$return.= '"'.$row[$j].'"' ;
} else {
$return.= '""';
}
if ($j<($num_fields-1)) {
$return.= ',';
}
}
}
$return.= ");\n";

$return.="\n\n\n";
}

//save file
$gzdata = gzencode($return, 9);
$handle = fopen('./database-'.$name.'-'.date("d_m_Y").'.sql.gz','w+');
fwrite($handle, $gzdata);
fclose($handle);
$return="";
mysqli_close($link);
echo " ######################### Sauvegarde terminée ######################### ";
}

backup_tables('adresse.du.serveur.sql','Utilisateur_mysql','password_mysql','nom_de_la_base_de_donnes');

?>

J'ai sauvegardé en plusieurs fois pour information et comme dit ça mettais les erreurs énumérées.
De plus, j'ai un fichier qui n'est pas pris en plusieurs fois car une base fait à elle seule 300Mo. Donc au delà de 128Mo géré par PHPMYADMIN.

Tu crois vraiment que cela m'amuse d'avoir pris un abonnement chez OVH qui m'est actuellement inutilisable ?
Alors que même si je ne suis pas informaticien, j'avais réussi chez 1and1 et ailleurs à transférer des BDD sans problème (mais elles étaient plus petites). Car je me suis 'entrainé' avant de vouloir le gros forum. Le soucis semble venir aussi de ma connexion. Beaucoup d'erreurs sur les gros transferts du coup je vais essayer d'une autre connexion.
Mais là je n'ai que des erreurs.
Je vais tenter le script, en te remerciant :wink: