Я использую Heidi SQL (v10.3.0.5771) для базы данных MySQL MariaDB (v10.1.22).
Пример запроса для целей этой темы
CREATE VIEW vw_TESTVIEW AS
SELECT MONTH
FROM tbl_calendar
WHERE YEAR = 2016
После создания VIEW (как простой, описанный выше) на моем компьютере, я открываю редактор в Хайди, и он превращает его в одну строку, как показано ниже, что является болью, когда речь идет о поддержке более сложных views.
select `tbl_calendar`.`Month` AS `MONTH` from `tbl_calendar` where (`tbl_calendar`.`Year` = 2016)
Исследования показали, что проблема связана с файлами ".frm", но не предоставили никакой дополнительной помощи. Если я создаю представление на сервере, на котором находится база данных, форматирование оператора сохраняется.
На моем компьютере, если я открываю запрос, созданный на сервере, он отображается в одну строку.
Мое предположение
При открытии кода для VIEW он сначала пытается использовать информацию из файла FRM, а в случае сбоя извлекает данные из information_schema. На сервере он имеет доступ к файлам FRM (так как они находятся в папке данных для базы данных), тогда как на моем компьютере эти файлы недоступны, поэтому он продолжает прибегать к данным, сохраненным в information_schema.
Любые идеи, как я могу создать представление, любые поддерживают форматирование из локальных установок (поскольку мы обычно не работаем на сервере).
Идея
При выборе представления вы видите, что Хайди выполняет следующие два вызова, из которых мы видим, что первый разрешается в расположение FRM (на сервере); Интересно, можно ли было изменить @@ GLOBAL.datadir на путь сервера UN C и затем предоставить разрешения на доступ к папке?
SELECT CAST(LOAD_FILE(CONCAT(IFNULL(@@GLOBAL.datadir, CONCAT(@@GLOBAL.basedir, 'data/')), 'myDB/vw_testview.frm')) AS CHAR CHARACTER SET utf8);
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='vw_testview' AND TABLE_SCHEMA='myDB' ORDER BY ORDINAL_POSITION;