diff options
| author | Nils Adermann <naderman@naderman.de> | 2011-06-12 04:10:51 +0200 | 
|---|---|---|
| committer | Nils Adermann <naderman@naderman.de> | 2011-06-12 04:10:51 +0200 | 
| commit | ef544ee095f2decde39cc537d3d675642b7c80f2 (patch) | |
| tree | 0ed36025f517c5e8254203a8faccf519b31d9932 | |
| parent | 8a5e3781d53e3df379c55166136abd6e71990af4 (diff) | |
| download | forums-ef544ee095f2decde39cc537d3d675642b7c80f2.tar forums-ef544ee095f2decde39cc537d3d675642b7c80f2.tar.gz forums-ef544ee095f2decde39cc537d3d675642b7c80f2.tar.bz2 forums-ef544ee095f2decde39cc537d3d675642b7c80f2.tar.xz forums-ef544ee095f2decde39cc537d3d675642b7c80f2.zip  | |
[ticket/9892] Table prefix lengths influence index lengths in db_tools
PHPBB3-9892
| -rw-r--r-- | phpBB/includes/db/db_tools.php | 14 | ||||
| -rw-r--r-- | phpBB/install/database_update.php | 14 | 
2 files changed, 18 insertions, 10 deletions
diff --git a/phpBB/includes/db/db_tools.php b/phpBB/includes/db/db_tools.php index 0e3173c23e..c1af2782f8 100644 --- a/phpBB/includes/db/db_tools.php +++ b/phpBB/includes/db/db_tools.php @@ -419,7 +419,7 @@ class phpbb_db_tools  			if (isset($prepared_column['auto_increment']) && strlen($column_name) > 26) // "${column_name}_gen"  			{ -				trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); +				trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);  			}  			// here we add the definition of the new column to the list of columns @@ -2056,9 +2056,11 @@ class phpbb_db_tools  	{  		$statements = array(); -		if (strlen($table_name . $index_name) > 30) +		$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config) +		if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)  		{ -			trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); +			$max_length = $table_prefix + 24; +			trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);  		}  		switch ($this->sql_layer) @@ -2091,9 +2093,11 @@ class phpbb_db_tools  	{  		$statements = array(); -		if (strlen($table_name . $index_name) > 30) +		$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config) +		if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)  		{ -			trigger_error("Index name '${table_name}_$index_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); +			$max_length = $table_prefix + 24; +			trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);  		}  		// remove index length unless MySQL4 diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 1abd91e27f..7bf41c8450 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -2321,7 +2321,7 @@ class updater_db_tools  			if (isset($prepared_column['auto_increment']) && strlen($column_name) > 26) // "${column_name}_gen"  			{ -				trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); +				trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);  			}  			// here we add the definition of the new column to the list of columns @@ -3891,9 +3891,11 @@ class updater_db_tools  	{  		$statements = array(); -		if (strlen($table_name . $index_name) > 30) +		$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config) +		if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)  		{ -			trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); +			$max_length = $table_prefix + 24; +			trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);  		}  		switch ($this->sql_layer) @@ -3926,9 +3928,11 @@ class updater_db_tools  	{  		$statements = array(); -		if (strlen($table_name . $index_name) > 30) +		$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config) +		if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)  		{ -			trigger_error("Index name '${table_name}_$index_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); +			$max_length = $table_prefix + 24; +			trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);  		}  		// remove index length unless MySQL4  | 
