Возникла странная проблема.
Я использую несколько просмотров БД в своем приложении. Все представления просто ссылаются на свои таблицы без префикса имени базы данных, например,
SELECT `foo`, `bar`
FROM `tablename`
Однако у меня есть одно представление, которое выглядит следующим образом:
SELECT `foo`, `bar`
FROM `database_name`.`table_name`
Это вызывает головные боли при выполнении Сравнение схем.
Я несколько раз редактировал представление, используя ALTER VIEW, но каждый раз, когда он повторно вставляет имя базы данных в качестве префикса. Я также удалил и воссоздал его с нуля, но результат тот же.
Хотя он делает это только для этого одного вида.
Я использую MySQL Workbench 6.3.10. Вот полное утверждение:
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `reporting_base` AS
SELECT
`b`.`creditor_id` AS `creditor_id`,
`c`.`creditor_name` AS `creditor_name`,
`c`.`group_name` AS `group_name`,
`rd`.`base_date` AS `base_date`,
`rd`.`year` AS `year`,
`rd`.`period` AS `period`,
`rd`.`week` AS `week`,
`b`.`id` AS `branch_id`,
`b`.`branch_name` AS `branch_name`,
`b`.`area` AS `area`,
`b`.`manager` AS `manager`,
`s`.`id` AS `staff_id`,
`s`.`type` AS `staff_type`,
`s`.`full_name` AS `staff_name`
FROM
(((`database_name`.`reporting_dates` `rd`
JOIN `database_name`.`branches` `b`)
JOIN `database_name`.`creditors` `c` ON (((`c`.`id` = `b`.`creditor_id`)
AND (`c`.`include_in_reports` = 1))))
LEFT JOIN (SELECT
0 AS `id`,
`database_name`.`creditors`.`id` AS `creditor_id`,
'n/a' AS `type`,
'n/a' AS `full_name`
FROM
`database_name`.`creditors` UNION SELECT
`database_name`.`staff`.`id` AS `id`,
`database_name`.`staff`.`creditor_id` AS `creditor_id`,
`database_name`.`staff`.`type` AS `type`,
`database_name`.`staff`.`full_name` AS `full_name`
FROM
`database_name`.`staff`) `s` ON ((`s`.`creditor_id` = `c`.`id`)))
WHERE
(`rd`.`base_date` <= UTC_DATE())