MyBB Community Forums
[F] Duplicate settings issue - Printable Version

+- MyBB Community Forums (https://community.mybb.com)
+-- Forum: Community Archive (https://community.mybb.com/forum-106.html)
+--- Forum: Archived Forums (https://community.mybb.com/forum-143.html)
+---- Forum: Archived Development and Support (https://community.mybb.com/forum-155.html)
+----- Forum: Archived Bug Reports (https://community.mybb.com/forum-74.html)
+------ Forum: MyBB 1.4.2 (https://community.mybb.com/forum-100.html)
+------ Thread: [F] Duplicate settings issue (/thread-38078.html)



[F] Duplicate settings issue - Ryan Gordon - 09-21-2008

This conditional was drove from various other problems, but mainly caused by Fix #3644 which was included in the 1.4.2 update.

Quote:During the upgrade of a board using pgsql you get the following error:
Quote:Fatal error: [SQL] [0] ERROR: invalid input syntax for integer: "yes"
SELECT name,sid FROM mybb_settings WHERE isdefault='1' OR isdefault='yes' in /var/www/testforum.blubotter.org/htdocs/moepforum/inc/db_pgsql.php on line 552
The query can be found in the file upgrade.php in the lines 717 and 723.

Possible fix: Replace
		$query = $db->simple_select("settings", "name,sid", "isdefault='1' OR isdefault='yes'");
		while($setting = $db->fetch_array($query))
		{
			$settings[$setting['sid']] = $setting['name'];
		}

		$query = $db->simple_select("settinggroups", "name,title,gid", "isdefault='1' OR isdefault='yes'");
with:
        if($db->type == "mysql" || $db->type == "mysqli")
        {
            $wheresettings = "isdefault='1' OR isdefault='yes'";
        }
        else
        {
            $wheresettings = "isdefault='1'";
        }
		$query = $db->simple_select("settings", "name,sid", $wheresettings);
		while($setting = $db->fetch_array($query))
		{
			$settings[$setting['sid']] = $setting['name'];
		}

		$query = $db->simple_select("settinggroups", "name,title,gid", $wheresettings);

$db->type is not initialized in upgrade.php because $db->type is initialized in inc/init.php throughout the rest of MyBB except install/upgrade.php and install/index.php because they don't initialize inc/init.php. This in turn caused there "where" condition to always be "isdefault='1'".

This issue only affects those who are upgrading from 1.2.x -> 1.4.2. Anyone else who is having the issue experienced a separate bug caused in 1.4.1 but was fixed in 1.4.2. The fix simply stops that particular issue from happening again on a future upgrade. It doesn't automatically repair the previous issues caused by it because there is no easy way to do so.

The fix is to set $db->type in install/upgrade.php and inc/init.php.


[F] Duplicate settings issue - Ryan Gordon - 09-21-2008

Thank you for your bug report.

This bug has been fixed in our internal code repository. Please note that the problem will not be fixed here until these forums are updated.

With regards,
MyBB Group


RE: [F] Duplicate settings issue - labrocca - 09-21-2008

Glad you found the reason for this. Curious if you updated the upgrade package?


RE: [F] Duplicate settings issue - Ryan Gordon - 09-21-2008

I have updated the MyBB Download package and the upgrade package with this fix. Please note that applying the fix will not remove your duplicate settings. The fix will only stop the problem from happening again.

(09-21-2008, 08:18 PM)labrocca Wrote: Glad you found the reason for this. Curious if you updated the upgrade package?

Give me a few seconds >.>