diff --git a/libraries/Table.class.php b/libraries/Table.class.php index dcea9a4e92..f0311ecadd 100644 --- a/libraries/Table.class.php +++ b/libraries/Table.class.php @@ -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)) { diff --git a/test/classes/PMA_Table_test.php b/test/classes/PMA_Table_test.php index 1639b93daa..4068452a77 100644 --- a/test/classes/PMA_Table_test.php +++ b/test/classes/PMA_Table_test.php @@ -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 + ); } /**