Меню

Ошибка 1064 ошибка службы при обработке команды как исправить

I wrote a Windows Service to run on Win10, and it worked perfectly fine until I decided to change it a bit. I rewrote some logic, tested it in both Debug and Release configurations, and everything was fine. Then I uninstalled the current version of the service using installutil.exe /u %servicename.exe% and reinstalled it again using installutil.exe %servicename.exe%.
For some reason, this new version cannot start, and it crashes with Error 1064. This is the full error text:

Windows could not start %servicename% service on Local Computer. Error 1064: An exception occurred in the service when handling the control request.

The last time I installed this service, I ran into some difficulties, but quickly fixed them by changing the Log On properties. This time, it is not working. Please help with this issue.

Thanks.

Update 1

Here are my Main() and OnStart() service methods:

Main()

static void Main()
{
#if DEBUG
    var service = new SalesforceToJiraService();
    service.OnDebug();
    Thread.Sleep(Timeout.Infinite);
#else
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[]
    {
        new SalesforceToJiraService()
    };
     ServiceBase.Run(ServicesToRun);
#endif
}

OnStart()

protected override void OnStart(string[] args)
{
    this.ConfigureServices();

    this.timer.Start();
    this.logger.Information("SalesforceToJira service started.");
}

Update 2

More code:

ConfigureServices()

protected void ConfigureServices()
{
    this.configuration = ConfigurationHelper.LoadConfiguration(ConfigurationPath);
    this.logger = ConfigurationHelper.ConfigureLogger(this.configuration.Logs.LogsPath);

    this.timer = ConfigurationHelper.ConfigureTimer(this.configuration.ProcessInterval.TotalMilliseconds,
        (sender, eventArgs) => this.ProcessCasesAsync(sender, eventArgs).GetAwaiter().GetResult());

    this.salesforceClient = new SalesforceCliClient(this.configuration.Salesforce.CliPath);

    this.jiraClient = Jira.CreateRestClient(
        this.configuration.Jira.Url,
        this.configuration.Jira.Username,
        this.configuration.Jira.Password);
}

I’m using Newtonsoft.JSON for deserializing a JSON configuration file, Serilog for logging, System.Timers.Timer for periodic events, AtlassianSDK for the Jira API and some wrappers over Salesforce CLI for Salesforce.

3 / 3 / 1

Регистрация: 19.05.2019

Сообщений: 155

1

04.04.2021, 14:31. Показов 8299. Ответов 5


https://docs.microsoft.com/ru-… t-designer

выполнял код отсюда, значит код рабочий , уверен кто это делал сталкивался с этой проблемой и надеюсь решил.
Тоесть моя служба видна в списке служб , при ее запуске выскакивает такая ошибка.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



3 / 3 / 1

Регистрация: 19.05.2019

Сообщений: 155

04.04.2021, 14:36

 [ТС]

2

Увеличиваю сообщение до 3х символов

Миниатюры

Ошибка службы при обработке команды (1064)
 



0



2715 / 2026 / 374

Регистрация: 22.07.2011

Сообщений: 7,671

04.04.2021, 14:58

3

ДЛ имончик, пример кода в методе OnStart покажите.



0



ДЛ имончик

3 / 3 / 1

Регистрация: 19.05.2019

Сообщений: 155

04.04.2021, 16:44

 [ТС]

4

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
protected override void OnStart(string[] args)
        {
            ServiceStatus serviceStatus = new ServiceStatus();
            serviceStatus.dwCurrentState = ServiceState.SERVICE_START_PENDING;
            serviceStatus.dwWaitHint = 100000;
            SetServiceStatus(this.ServiceHandle, ref serviceStatus);
            eventLog1.WriteEntry("In OnStart.");
            Timer timer = new Timer();
            timer.Interval = 60000; // 60 seconds
            timer.Elapsed += new ElapsedEventHandler(this.OnTimer);
            timer.Start();
            serviceStatus.dwCurrentState = ServiceState.SERVICE_RUNNING;
            SetServiceStatus(this.ServiceHandle, ref serviceStatus);
        }



0



2715 / 2026 / 374

Регистрация: 22.07.2011

Сообщений: 7,671

04.04.2021, 20:42

5

ДЛ имончик, оберни все это в try catch , наверняка тут падает , потому служба и не стартует.



0



ДЛ имончик

3 / 3 / 1

Регистрация: 19.05.2019

Сообщений: 155

05.04.2021, 13:08

 [ТС]

6

не помогло, служба запускается , грузится и тогда возникает ошибка (где то на 10%), она и раньше начинала запуск
У меня есть метод

C#
1
private void eventLog1_EntryWritten(object sender, EntryWrittenEventArgs e)

он пустой , но при этом есть такие команды

C#
1
 eventLog1.WriteEntry("File not found");

мб тут проблема?

Добавлено через 16 минут
не фигня, не прав



0



Дата: 25.11.2013

Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru

Статья ориентирована на новичков. В ней объясняется, что означает ошибка сервера MySQL №1064, рассматриваются типичные ситуации и причины возникновения этой ошибки, а также даются рекомендации по исправлению.

Рассмотрим простейший пример.

SELECT mid, time, title, artist, download, view_count, rating, vote_num FROM dle_mservice WHERE category = ‘1’ AND approve = ‘1’ ORDER BY time DESC LIMIT -10,10;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘-10,10’ at line 1

Сервер MySQL сообщает, что в первой строке нашего SQL запроса имеется синтаксическая ошибка, и в одинарных кавычках цитирует часть запроса с того места где начинается ошибка. Это очень полезное свойство, так как позволяет сразу определить место, которое сервер счел ошибочным. В данном случае это ‘-10,10’, ошибка возникает из-за того, что параметр LIMIT не может быть отрицательным числом.

Однако, бывает и так, что цитируемый кусок запроса не содержит синтаксической ошибки. Это означает, что данная часть запроса находится не на своем месте из-за чего весь запрос становится синтаксически неверным. Например, отсутствует разделитель между двумя запросами, пропущен кусок запроса, невидимый символ в дампе и т.д. Неудобством таких ситуаций является то, что сообщение об ошибке не содержит исходный запрос.
Действия по исправлению зависят от контекста возникновения ошибки. Таковых всего 3:

1. Запрос в редакторе.

Самый простейший случай — вы пишите свой запрос в редакторе. Если причина не опечатка, то:

  • Смотреть в документации синтаксис команды для вашей версии сервера MySQL.

    Обратите внимание: речь идет о версии сервера MySQL, а не клиента (phpmyadmin, workbench и т.д.). Версию сервера можно узнать выполнив команду select version();

  • В MySQL допускается использование ключевых слов в качестве имен столбцов/таблиц, но при этом их необходимо заключать в обратные кавычки (там где буква ё на клавиатуре).
    Пример:

    select order from test;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘order from test’ at line 1
    MariaDB [test]> select `order` from test;
    +——-+
    | order |
    +——-+
    |  NULL |
    +——-+

  • По умолчанию ; разделяет команды. Если же нужно выполнить набор из нескольких инструкций как одну команду (например, при создании процедур, фунуций, триггеров), то в зависимости от используемого клиента может потребоваться переопределить разделитель с помощью DELIMITER, иначе интерпретация команды остановится на первой ; и будет ошибка синтаксиса. Пример:

    delimiter //
    create procedure test()
    begin
    set @a=1;
    select @a;
    end//

    Обратите внимание: DELIMITER это команда консольного клиента mysql, необходимость его использования зависит от того как вы передаете команду серверу. Например,:

    • mysql_query() выполняет содержимое как одну команду, добавление delimiter приведет к error 1064 с цитатой, начинающейся со слова delimiter
    • phpmyadmin удаляет слово delimiter из-за чего возникает error 1064 с цитатой, начинающейся с переопределенного разделителя
    • в MysqlQueryBrowser напротив необходимо использовать delimiter.

2. Перенос базы на другой сервер.

У вас есть дамп (т.е. файл с расширением .sql) и при попытке его импортировать вы получаете ошибку 1064. Причины:

  • В различных версиях набор ключевых слов и синтаксис может немного отличаться. Наиболее распространенный случай: команда create table, в которой ключевое слово type было заменено на engine. Например, если вы получаете ошибку:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TYPE=MyISAM CHARACTER SET `utf8`’ at line 29

    Это означает, что вы переносите базу в пятую версию сервера MySQL, в котором ключевое слово TYPE не поддерживается и его нужно заменить на ENGINE.

    Редко бываю случаи, когда перенос идет на старый (~3.23) сервер, который кодировки не поддерживает. Тогда ошибка будет иметь вид:

    #1064 — You have an error in your SQL syntax near ‘DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci’ at line 1

    Такое может произойти, если вы переносите базу с хостинга на локальный комп, где стоит древняя версия MySQL. Лучшим решением в данном случае будет не править дамп, а обновить MySQL.

  • Часто проблемы вызваны тем, что дамп делается неродными средствами MySQL (например, phpmyadmin) из-за чего в нем могут быть BOM-маркер, собственный синтаксис комментариев, завершения команды и т.д. Кроме того при использовании того же phpmyadmin возможна ситуация при которой из-за ограничения апача на размер передаваемого файла команда будет обрезана, что приведет к ошибке 1064.
    Например, если вы получаете ошибку:

    #1064 — You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘
    CREATE TABLE `jos_banner` (
      `bid` int(11) NOT NULL auto_increment,
      `ci‘ at line 1

    Значит ваш дамп содержит BOM-маркер. Это три байта в начале файла, помогающие программе определить что данный файл сохранен в кодировке UTF-8. Проблема в том, что MySQL пытается интерпретировать их как команду из-за чего возникает ошибка синтаксиса. Нужно открыть дамп в текстовом редакторе (например, Notepad++) и сохранить без BOM.

    Для избежания подобных проблем при создании дампа и его импорте лучше пользоваться родными средствами MySQL, см http://sqlinfo.ru/forum/viewtopic.php?id=583

3. Некорректная работа сайта.

Если во время работы сайта появляются ошибки синтаксиса, то, как правило, причина в установке вами сомнительных модулей к вашей cms. Лучшее решение — отказаться от их использования. Еще лучше предварительно проверять их работу на резервной копии.

Пример. Движок dle 7.2, поставили модуль ,вроде бы все Ок, но:

MySQL Error!
————————
The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘AND approve=’1‘ AND date < ‘2008-10-04 04:34:25‘ LIMIT 5’ at line 1

Error Number:
1064
SELECT id, title, date, category, alt_name, flag FROM dle_post WHERE MATCH (title, short_story, full_story, xfields, title) AGAINST (‘Приобретение и оплата скрипта ‘) AND id !=  AND approve=‘1’ AND date < ‘2008-10-04 04:34:25’ LIMIT 5

В данном примере мы видим, что причина ошибки в отсутствии значения после «id != «

Обратите внимание: из процитированного сервером MySQL куска запроса причина ошибки не ясна. Если ваша CMS не показывает весь запрос целиком, то нужно в скриптах найти место где выполняется данный запрос и вывести его на экран командой echo.

Кусок кода, который отвечает за данный запрос это

$db->query («SELECT id, title, date, category, alt_name, flag FROM « . PREFIX . «_post WHERE MATCH (title, short_story, full_story, xfields, title) AGAINST (‘$body’) AND id != «.$row[‘id’].» AND approve=’1′».$where_date.» LIMIT «.$config[‘related_number’]);

Далее можно искать откуда взялась переменная $row и почему в ней нет элемента ‘id’ и вносить исправления, но лучше отказаться от использования такого модуля (неизвестно сколько сюрпризов он еще принесет).

P.S. Если после прочтения статьи ваш вопрос с MySQL Error 1064 остался нерешенным, то задавайте его на форуме SQLinfo

Дата публикации: 25.11.2013

© Все права на данную статью принадлежат порталу SQLInfo.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.

4

Пользователь создал 2 заказа подряд, с разницей в несколько секунд, во втором заказе отображается только доставка, товаров нет. Такое было и раньше, удаляли просто заказ и всё. А теперь мы даже в него зайти не можем, выскакивает такая ошибка.

В db.log вот что:

2020-03-22 21:23:45 109.252.36.200
Query Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
                GROUP BY pc.id
                ORDER BY pc.name' at line 5
Query: SELECT pc.*, GROUP_CONCAT(tc.type_id SEPARATOR ',') AS type_ids
                FROM shop_product_code AS pc
                    JOIN shop_type_codes AS tc
                        ON tc.code_id=pc.id
                        AND tc.type_id IN (0, )
                GROUP BY pc.id
                ORDER BY pc.name
## wa-system/database/waModel.class.php(266)
#0 wa-system/database/waModel.class.php(366): waModel->run('SELECT pc.*, GR...')
#1 wa-system/database/waDbStatement.class.php(229): waModel->query('SELECT pc.*, GR...')
#2 wa-system/database/waModel.class.php(346): waDbStatement->query(Array)
#3 wa-apps/shop/lib/model/shopProductCode.model.php(40): waModel->query('SELECT pc.*, GR...', Array)
#4 wa-apps/shop/lib/model/shopOrderItemCodes.model.php(33): shopProductCodeModel->getByType(Array)
#5 wa-apps/shop/lib/classes/shopOrder.class.php(772): shopOrderItemCodesModel->extendOrderItems(Array)
#6 wa-apps/shop/lib/classes/shopOrder.class.php(462): shopOrder->getItemsProductCodes()
#7 wa-apps/shop/lib/classes/shopOrder.class.php(606): shopOrder->__get('items_product_c...')
#8 wa-apps/shop/lib/workflow/shopWorkflowEditcodeAction.class.php(22): shopOrder->offsetGet('items_product_c...')
#9 wa-apps/shop/lib/workflow/shopWorkflowState.class.php(93): shopWorkflowEditcodeAction->isAvailable(Object(shopOrder))
#10 wa-apps/shop/lib/classes/shopOrder.class.php(856): shopWorkflowState->getActions(Object(shopOrder))
#11 wa-apps/shop/lib/classes/shopOrder.class.php(460): shopOrder->readActions()
#12 wa-apps/shop/lib/classes/shopOrder.class.php(907): shopOrder->__get('actions')
#13 wa-apps/shop/lib/classes/shopOrder.class.php(460): shopOrder->readWorkflowActionElements()
#14 wa-apps/shop/lib/actions/order/shopOrder.action.php(36): shopOrder->__get('workflow_action...')
#15 wa-system/controller/waViewAction.class.php(161): shopOrderAction->execute()
#16 wa-system/controller/waViewController.class.php(86): waViewAction->display()
#17 wa-system/controller/waDefaultViewController.class.php(48): waViewController->executeAction(Object(shopOrderAction))
#18 wa-system/controller/waController.class.php(21): waDefaultViewController->execute()
#19 wa-system/controller/waViewController.class.php(46): waController->run(NULL)
#20 wa-system/controller/waFrontController.class.php(263): waViewController->run(NULL)
#21 wa-system/controller/waFrontController.class.php(190): waFrontController->runController(Object(waDefaultViewController), NULL)
#22 wa-system/controller/waFrontController.class.php(84): waFrontController->execute(NULL, 'order', NULL)
#23 wa-system/waSystem.class.php(741): waFrontController->dispatch()
#24 wa-system/waSystem.class.php(613): waSystem->dispatchBackend('webasyst/shop/')
#25 index.php(7): waSystem->dispatch()
#26 {main}

Что это и почему это?


21 комментарий

  • популярные
  • новые


  • +2

    Видимо было установлено последнее обновление Shop-script?

    Ошибка указывает на неправильный запрос в базу данных. Связан он с таблицей 

    shop_type_codes 

    Точнее в этом месте запроса

    AND tc.type_id IN (0, )

    где после запятой отсутствует идентификатор.

    Предполагаю, что данная ошибка связана с новым функционалом Товарных кодов, добавленным в последнем обновлении Shop-script. 

    Если заказ без товаров, то в нём нет и товарных кодов. Поэтому, скорее всего, и возникает ошибка. Разработчики, очевидно, предполагают, что не может быть заказа без товаров, что, в принципе, логично.

    В Вашем случае нужно переделать функционал корзины, чтобы не допускать создание «пустых» заказов. Предполагаю, что они возникают из-за многократного нажатия на кнопку подтверждения оформления заказа в корзине, когда клиент не дожидается ответа сервера. Если так, то решением будет являться блокировка кнопки создания заказа после нажатия.



    • +1

      Да, именно после обновления такая фигня появилась. 

      А как сделать блокировку кнопки?

      И как удалить этот висящий сейчас полузаказ?



      • +2

        А как сделать блокировку кнопки?

        Это зависит от шаблона корзины Вашего сайта. Скорее всего, Вы используете не стандартную корзину, а какой-то плагин или отдельный шаблон корзины.Вероятно, потребуется найти js код, отвечающий за нажатие кнопки «Оформить заказ» и доработать его.

        И как удалить этот висящий сейчас полузаказ?

        Проще всего через базу данных найти заказ по идентификатору в таблице shop_order. Далее в поле state_id поменять значение на deleted. 

        Ещё можете попробовать такой вариант. Откройте заказ по прямой ссылке на редактирование

        https://domain/webasyst/shop/?action=orders#/orders/edit/order_id/
        domain - url сайта
        order_id - id заказа

        Если откроется, то добавьте хотя бы один товар и сохраните. Далее уже удалите стандартно…



        • +1

          Спасибо! По ссылке для редактирования удалось добавить товар и после этого удалить заказ.

          Да, мы используем плагин «Заказ на одной странице».



          • +1

            будем надеться, что починят, раз статус «принято» появился.

            А вообще, у нас много косяков повылезало после последнего обновления.



          • +2

            Попробуйте в качестве быстрого исправления в файле wa-apps/shop/lib/model/shopProductCode.model.php перед строкой

            $sql = "SELECT pc.*, GROUP_CONCAT(tc.type_id SEPARATOR ',') AS type_ids

            добавить

            if (!$type_id) {
                $type_id = 0;
            }



            • +1

              Мы выпустили обновление Shop-Script с исправлением этой ошибки. Обновление можно установить в «Инсталлере».

              Проверьте, пожалуйста. Сообщите, если проблема сохранилась.



              • +1

                А можно сделать на уровне движка, а не шаблона, чтобы пользователь «тыркающий» несколько раз подряд на кнопку оформления заказа получал только один заказ, а не несколько?



                • +1

                  Почему вы задаёте этот вопрос? В вашей теме дизайна нет блокировки повторного нажатия на кнопку оформления заказа?



                  • +2

                    За год мы сменили три разных дизайна и ни в одном не было блокировки. Штатного программиста нет, поэтому было бы очень удобно, чтобы такая функция была по умолчанию в скрипте движка.



                    • 0

                      Напишите об этом разработчику темы дизайна, чтобы исправил недочёт в своём продукте.



                    • +4

                      Михаил, в многих темах дизайна, есть нормальные всплывающие окна, есть нормальный слайдер товаров (я про рекомендованные), но вы то зашиваете свое и без права редактирования. Если вы и берете все управление корзиной уже на свою сторону, тогда вносите все такие просьбы уже сами в свой код



                        • +2

                          А разве ничего? Вся корзина — встроена в движок. Речь про одностраничную само собой. Ваша идея и стремление, почему так сделано понятна, хоть и не идеальна. Вы полностью ее контролируете, дав нам, разработчикам, только подписываться на события. Если весь контроль и логика вшита в движок, то и будьте добры, продумайте все возможные проблемы, в том числе и блокировка повторного нажатия. Но нет же, вы перекладываете это на сторонних разработчиков.

                          P.S. что касательно списка рекомендуемых товаров. Вот клиент не хочет выводить список товаров, который подбирает движок. Не нравится карусель товаров, в которой он выводится. Что мне делать с этим кодом? 

                          {$wa->shop->checkout()->crossSelling([
                              "DEBUG" => true,
                              "wrapper" => "#js-cross-selling-section"
                          ])}

                          как вырубить вашу карусель, как вырубить вашу подборку и вставить к примеру кастомный список товаров — документации нет, ибо и такой возможности нет.

                          Надеюсь я ответил на ваш вопрос



                          • +1

                            В какой теме дизайна возможно двойное нажатие на кнопку подтверждения заказа при оформлении заказа в корзине?



                            • +2

                              Этот вопрос должен быть адресован автору выше


                              А по сути какая разница? Это так сложно реализовать? К примеру если на момент оформления заказа, будет 500 ошибка, клиент этого не видит, и судорожно несколько раз жмет кнопку



                            • +1

                              С пошаговым оформление понятно. А как быть с оформлением в корзине?



                              • +1

                                Что именно вы хотите узнать?



                                • +1

                                  Как именно при оформлении заказа в корзине блокируется и блокируется ли вообще двойное нажатие?

                                  Добавить комментарий

                                  0 0 голоса
                                  Рейтинг статьи
                                  Подписаться
                                  Уведомить о
                                  guest

                                  0 комментариев
                                  Старые
                                  Новые Популярные
                                  Межтекстовые Отзывы
                                  Посмотреть все комментарии

                                  А вот еще интересные материалы:

                                • Яшка сломя голову остановился исправьте ошибки
                                • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
                                • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
                                • Ошибка 1064 на сайте
                                • Ошибка 1064 mysql при создании таблицы