PDA

View Full Version : Fatal error: vBulletin datastore cache incomplete or corrupt in [path]\includes\init.


tblancha
11-07-2012, 01:48 AM
Hello,

I've upgraded to 4.2.0 and when I run the following code, I get an error stating:

Fatal error: vBulletin datastore cache incomplete or corrupt in
[path]\includes\init.php on line 252


Above that message is the message: vBulletin datastore error caused by one or more of the following:

1.You may have uploaded vBulletin files without also running the vBulletin
upgrade script. If you have not run the upgrade script, do so now.

2.The datastore cache may have been corrupted. Run Rebuild Bitfields
from tools.php, which you can upload from the do_not_upload
folder of the vBulletin package.



I've done steps 1 and 2 and still no luck.

Also, I noticed in the results of the print_r command, it shows the message "Sorry, the board is unavailable at the moment while we are testing some
functionality.


We will be back soon..." which is used when I turn off the forums. However my forum is now turned back on after I applied the 4.2.0 upgrade.


Here's the code I'm running (the issue occurs at the line where I use the datamanager_init call):

<?php
include_once("global.php");

echo "current working directory before going into function is: " . CWD ;

$email = "userMom@myforum.com";
$useridq = $vbulletin->db->query_first_slave("SELECT userid FROM "
. TABLE_PREFIX . "user WHERE email='{$email}'");
$syd_userinfo = fetch_userinfo($useridq['userid'], 0, 0);

echo "<br> given the email, it found this as the user id: " . $useridq['userid'] . " <br>";

doit();

echo "done";

function doit()
{
define('VB_AREA', 'External');
define('SKIP_SESSIONCREATE', 0);
define('SKIP_USERINFO', 1);
define('CWD', './../forums/' );
echo "current working directory in function is: " . CWD ;
require(CWD . '/includes/init.php');
require(CWD . '/includes/functions_misc.php');

echo "right after require <br>";

global $vbulletin;
echo "right after global vbulletin and db declaration <br>";
echo "right before datamanager stuff <br>";
$newuser =& datamanager_init('User', $vbulletin, ERRTYPE_ARRAY);

echo "right after newuser assigned reference to datamanager <br>";

$newuser->set('username', 'pookie');
$newuser->set('email', 'pookie@mydomain.com');
$newuser->set('password', '*******');
$newuser->set('usergroupid', 2);

echo "right before presave <br>";
$newuser->pre_save();
echo "right after presave <br>";
if(empty($newuser->errors))
{
echo "would have saved";

}
else
{
echo "no bueno. it would not have saved";
print_r( $newuser->errors);
}


}

?>

*********************************

I appreciate your help because I don't know what to do from here.


Thanks

kh99
11-07-2012, 02:31 AM
global.php (which you've included at the beginning) includes init.php, so I don't think that you want to include init.php again in your doit() function. And even if you were going to do that, I don't think it would work to include it inside a function unless you declare some variables as global before the include.

Edit: oh, just for the record:

Also, I noticed in the results of the print_r command, it shows the message "Sorry, the board is unavailable at the moment while we are testing some
functionality.


We will be back soon..." which is used when I turn off the forums. However my forum is now turned back on after I applied the 4.2.0 upgrade.


The text of that message is an option, and all the options are stored somewhere in the $vbulletin object, so you're probably just seeing that.

tblancha
11-07-2012, 11:38 AM
Ok, I did get rid of the function and the error messages have disappeared. I have to admit the fact that I got them makes me feel my install and database might be suspect.

Why can't we include and do things in functions? It sure makes for ugly, hard to read code.

Anyway, I'm whining but am very grateful that you responded to my post.

I just hope my database and vbulletin features are stable.

Thank you!

kh99
11-07-2012, 12:53 PM
Well, I think we just have to accept that vbulletin wasn't designed to be used as part of something else. But as I mentioned before, I believe you *can* use it in a function, you just need to figure out which variables to declare "global" before the include of global.php.