1
0
mirror of https://github.com/phpmyadmin/phpmyadmin.git synced 2026-10-29 21:24:44 +03:00

Fix - exclude db name in SQL when relations are made between table in the same db

To prevent replication from breaking when replicating to a db with different name

Signed-off-by: Madhura Jayaratne <madhura.cj@gmail.com>
This commit is contained in:
Madhura Jayaratne
2015-12-02 10:35:49 +11:00
parent cb867b8d94
commit fcc89aa203
2 changed files with 22 additions and 3 deletions

View File

@@ -2288,9 +2288,10 @@ class PMA_Table
foreach ($foreignField as $key => $one_field) {
$foreignField[$key] = PMA_Util::backquote($one_field);
}
$sql_query .= ' FOREIGN KEY (' . implode(', ', $field) . ')'
. ' REFERENCES ' . PMA_Util::backquote($foreignDb)
. '.' . PMA_Util::backquote($foreignTable)
$sql_query .= ' FOREIGN KEY (' . implode(', ', $field) . ') REFERENCES '
. ($this->_db_name != $foreignDb
? PMA_Util::backquote($foreignDb) . '.' : '')
. PMA_Util::backquote($foreignTable)
. '(' . implode(', ', $foreignField) . ')';
if (! empty($onDelete)) {

View File

@@ -898,6 +898,24 @@ class PMA_Table_Test extends PHPUnit_Framework_TestCase
$sql_excepted,
$sql
);
// Exclude db name when relations are made between table in the same db
$sql = $method->invokeArgs(
$tableObj, array(
$table,
$field,
'db',
$foreignTable,
$foreignField
)
);
$sql_excepted = 'ALTER TABLE `PMA_table` ADD '
. 'FOREIGN KEY (`PMA_field1`, `PMA_field2`) REFERENCES '
. '`foreignTable`(`foreignField1`, `foreignField2`);';
$this->assertEquals(
$sql_excepted,
$sql
);
}
/**