You've already forked phpmyadmin
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:
@@ -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)) {
|
||||
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user