mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
[ticket/15259] Fatal error on SQLite/Oracle database update
PHPBB3-15259
This commit is contained in:
parent
aef138d8bc
commit
b7ce395fbe
1 changed files with 14 additions and 22 deletions
|
@ -941,29 +941,19 @@ class tools implements tools_interface
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// These DBMS prefix index name with the table name
|
|
||||||
switch ($this->sql_layer)
|
switch ($this->sql_layer)
|
||||||
{
|
{
|
||||||
|
// These DBMS prefix index name with the table name
|
||||||
case 'oracle':
|
case 'oracle':
|
||||||
case 'sqlite3':
|
case 'sqlite3':
|
||||||
$index_name = $this->check_index_name_length($table_name, $table_name . '_' . $index_name, false);
|
$new_index_name = $this->check_index_name_length($table_name, $table_name . '_' . $index_name, false);
|
||||||
$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
|
break;
|
||||||
|
default:
|
||||||
if (strpos($index_name , $table_name) === false)
|
$new_index_name = $this->check_index_name_length($table_name, $index_name, false);
|
||||||
{
|
|
||||||
if (strpos($index_name, $table_prefix) !== false)
|
|
||||||
{
|
|
||||||
$row[$col] = substr($row[$col], strlen($table_prefix) + 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$row[$col] = substr($row[$col], strlen($table_name) + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strtolower($row[$col]) == strtolower($index_name))
|
if (strtolower($row[$col]) == strtolower($new_index_name))
|
||||||
{
|
{
|
||||||
$this->db->sql_freeresult($result);
|
$this->db->sql_freeresult($result);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1577,15 +1567,17 @@ class tools implements tools_interface
|
||||||
$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
|
$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
|
||||||
if (strpos($index_name, $table_prefix) === 0)
|
if (strpos($index_name, $table_prefix) === 0)
|
||||||
{
|
{
|
||||||
$index_name = substr($index_name, strlen($table_prefix) + 1);
|
$index_name = substr($index_name, strlen($table_prefix));
|
||||||
return $this->check_index_name_length($table_name, $index_name);
|
return $this->check_index_name_length($table_name, $index_name, $throw_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try removing the table name then
|
// Try removing the remaining suffix part of table name then
|
||||||
if (strpos($index_name, $table_name) === 0)
|
$table_suffix = substr($table_name, strlen($table_prefix));
|
||||||
|
if (strpos($index_name, $table_suffix) === 0)
|
||||||
{
|
{
|
||||||
$index_name = substr($index_name, strlen($table_name) + 1);
|
// Remove the suffix and underscore separator between table_name and index_name
|
||||||
return $this->check_index_name_length($table_name, $index_name);
|
$index_name = substr($index_name, strlen($table_suffix) + 1);
|
||||||
|
return $this->check_index_name_length($table_name, $index_name, $throw_error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($throw_error)
|
if ($throw_error)
|
||||||
|
|
Loading…
Add table
Reference in a new issue