Seite 1 von 1

Umstieg auf MySQL 4.0.x ...

Verfasst: 18.08.2004 16:52
von testit
Hallo,

unter
http://www.phpbb.de/doku/kb/artikel.php ... ght=update
wird beschrieben, es sei beim Umstieg auf MySQL 4.0.x lediglich in der config.php $dbms = 'mysql4' zu setzen.

Das wundert mich aus folgenden Gründen:

1)
Unter http://dev.mysql.com/doc/mysql/de/Upgra ... -3.23.html findet sich folgender Hinweis: "Die alten C-API-Funktionen mysql_drop_db, mysql_create_db und mysql_connect werden nicht mehr unterstützt, es sei denn, MySQL wird mit USE_OLD_FUNCTIONS kompiliert." Dies dürfte eigentlich nicht bei jedem Anwender standardmässig der Fall sein.

2)
In den update_to_xy.php scripten, die in jeder phpBB2-Version enthalten sind, werden explizit beim Einsatz von MySQL-4 Änderungen an den tables von phpBB2 vorgenommen, bspw:

Code: Alles auswählen

	case 'mysql4':
				// Add indexes to post_id in search match table (+ word_id for MS Access)
				$sql[] = "ALTER TABLE " . SEARCH_MATCH_TABLE . " 
					ADD INDEX post_id (post_id)";

				// Modify user_timezone to decimal(5,2) for mysql ... mysql4/mssql/pgsql/msaccess
				// should be completely unaffected
				// Change default user_notify to 0 
				$sql[] = "ALTER TABLE " . USERS_TABLE . " 
					MODIFY COLUMN user_timezone decimal(5,2) DEFAULT '0' NOT NULL, 
					MODIFY COLUMN user_notify tinyint(1) DEFAULT '0' NOT NULL";

				// Adjust field type for prune_days, prune_freq ... was too small
				$sql[] = "ALTER TABLE " . PRUNE_TABLE . " 
					MODIFY COLUMN prune_days smallint(5) UNSIGNED NOT NULL, 
					MODIFY COLUMN prune_freq smallint(5) UNSIGNED NOT NULL";
				break;
Auch diese werden doch einfach ausser acht gelassen, wenn man lediglich $dbms = 'mysql4' setzt.

Wie seht Ihr das?

MfG

testit

Verfasst: 18.08.2004 19:23
von Mungo
Wenn du in das Verzeichnis phpBB/db/ schaust, dann findest du dort eine Datei mysql.php und eine mysql4.php. Die mysql.php ist für MySQL 3 zuständig und die andere für MySQL 4.

Du musst dir den Code aus der update_to_20x.php genauer anschauen. Nach

Code: Alles auswählen

case: 'mysql':
folgt kein

Code: Alles auswählen

break;
. Der Code bei

Code: Alles auswählen

case 'mysql4':
wird also auch ausgeführt, wenn SQL_LAYER 'mysql' ist.

Code: Alles auswählen

switch (SQL_LAYER)
		{
			case 'mysql':
			case 'mysql4':
				// Add indexes to post_id in search match table (+ word_id for MS Access)
				$sql[] = "ALTER TABLE " . SEARCH_MATCH_TABLE . " 
					ADD INDEX post_id (post_id)";

				// Modify user_timezone to decimal(5,2) for mysql ... mysql4/mssql/pgsql/msaccess
				// should be completely unaffected
				// Change default user_notify to 0 
				$sql[] = "ALTER TABLE " . USERS_TABLE . " 
					MODIFY COLUMN user_timezone decimal(5,2) DEFAULT '0' NOT NULL, 
					MODIFY COLUMN user_notify tinyint(1) DEFAULT '0' NOT NULL";

				// Adjust field type for prune_days, prune_freq ... was too small
				$sql[] = "ALTER TABLE " . PRUNE_TABLE . " 
					MODIFY COLUMN prune_days smallint(5) UNSIGNED NOT NULL, 
					MODIFY COLUMN prune_freq smallint(5) UNSIGNED NOT NULL";
				break;

Verfasst: 13.04.2006 15:01
von mgutt
Wunderbar.. nach einem Jahr merke ich dann auch mal, dass ich MySQL4 habe und aber in der config noch "mysql" steht und nicht "mysql4".

Mal sehen, vielleicht wird die Seite jetzt was schneller :lol: