В идеале вы должны перейти на MYSQL 8, этот ответ больше предназначен для развлечения
blockquote>Вам нужно написать сложный SQL для имитации / эмуляции MySQL 8.0
JSON_TABLE()
в версиях ниже MySQL 8Запрос
SET @json = '[ { "name":"John Smith", "address":"780 Mission St, San Francisco, CA 94103"}, { "name":"Sally Brown", "address":"75 37th Ave S, St Cloud, MN 94103"}, { "name":"John Johnson", "address":"1262 Roosevelt Trail, Raymond, ME 04071"} ]'; ##SELECT @json; SELECT * FROM JSON_TABLE (@json, '$[*]' COLUMNS ( `name` VARCHAR(40) PATH '$.name', `address` VARCHAR(100) PATH '$.address')) AS T;
Результат
| name | address | | ------------ | --------------------------------------- | | John Smith | 780 Mission St, San Francisco, CA 94103 | | Sally Brown | 75 37th Ave S, St Cloud, MN 94103 | | John Johnson | 1262 Roosevelt Trail, Raymond, ME 04071 |
В MySQL 5.7 запрос имитации / эмуляции включает в себя использование генератора чисел и нескольких собственных функций JSON MySQL.
Запрос
SELECT REPLACE(JSON_EXTRACT(json_record.json, CONCAT('$[',number,'].name')), '"', '') AS name , REPLACE(JSON_EXTRACT(json_record.json, CONCAT('$[',number,'].address')), '"', '') AS address FROM ( SELECT @row := @row + 1 AS number FROM ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) row1 CROSS JOIN ( SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ) row2 CROSS JOIN ( SELECT @row := -1 ) init_user_params ) AS number_generator CROSS JOIN ( SELECT JSON_LENGTH(json_information.json) - 1 AS json_length , json_information.json FROM ( SELECT record.json FROM ( SELECT ' [{ "name": "John Smith", "address": "780 Mission St, San Francisco, CA 94103" }, { "name": "Sally Brown", "address": "75 37th Ave S, St Cloud, MN 94103" }, { "name": "John Johnson", "address": "1262 Roosevelt Trail, Raymond, ME 04071" }] ' AS json FROM DUAL ) AS record ) AS json_information ) AS json_record WHERE number BETWEEN 0 AND json_length
Результат
| name | address | | ------------ | --------------------------------------- | | John Smith | 780 Mission St, San Francisco, CA 94103 | | Sally Brown | 75 37th Ave S, St Cloud, MN 94103 | | John Johnson | 1262 Roosevelt Trail, Raymond, ME 04071 |
см. демо
Найденный им наконец: кажется, существует "функция" в ServiceProcessInstaller
, где код перезаписывает значения, я обеспечил явно значениями от контекста. Установщик MSI установил имя пользователя на небольшое количество дерьма (мое название компании), и ServiceProcessInstaller
попробованный для установки сервиса как этого пользователя а не того, явно обеспеченного мной. Таким образом, обходное решение должно установить правильные значения в конфигурации:
public override void Install(IDictionary stateSaver)
{
.... open the form, bla bla bla
serviceProcessInstaller.Password = accountForm.txtPassword.Text;
Context.Parameters["PASSWORD"] = accountForm.txtPassword.Text;
serviceProcessInstaller.Username = accountForm.txtServiceAccount.Text;
Context.Parameters["USERNAME"] = accountForm.txtServiceAccount.Text;
serviceProcessInstaller.Account = ServiceAccount.User;
}
Возможно, ее полученный что-то, чтобы сделать с Вашей сервисной учетной записью на Вас среду машины
Надеюсь справка для понимания ситуации.