Хороший способ отладки ошибок Visual Studio Designer

Я использовал ON DUPLICATE KEY UPDATE много. Для некоторых ситуаций это нестандартное расширение SQL, которое действительно стоит использовать.

Во-первых, вам нужно убедиться, что у вас есть уникальное ограничение ключа на месте. Функция ON DUPLICATE KEY UPDATE срабатывает только в том случае, если бы было уникальное нарушение ключа.

Вот широко используемый формат:

 $query = "INSERT INTO $table (column1, column2, column3)
 VALUES ('value-1', 'value-2', 'value-3')
 ON DUPLICATE KEY UPDATE
 column1 = values(column1),
 column2 = values(column2),
 column3 = values(column3);"

column1 = values(column1) означает «Обновить столбец1 со значением, которое было бы вставлено, если запрос не попал в нарушение дублирующего ключа. " Другими словами, это просто означает, что столбец обновления1 будет иметь то, что было бы с обработкой вставки.

. Посмотрев на этот код, кажется неправильным, что вы обновляете все три столбца, которые вы 'пытается вставить. Какой из столбцов имеет уникальное ограничение?

EDIT: Изменить на основе формата «SET» инструкции вставки mysql для вопроса из OP.

В основном для использования ON DUPLICATE KEY UPDATE вы просто пишете инструкцию insert, как обычно , но добавьте предложение ON DUPLICATE KEY UPDATE, прикрепленное к концу. Я считаю, что он должен работать следующим образом:

INSERT INTO $table 
    set column1 = 'value-1',
        column2 = 'value-2',
        column3 = 'value-3'
ON DUPLICATE KEY UPDATE
    column1 = values(column1),
    column2 = values(column2),
    column3 = values(column3);

Опять же, один из столбцов, которые вы вставляете, должен иметь уникальный индекс (или комбинацию столбцов). Это может быть связано с тем, что один из них является первичным ключом или потому, что в таблице есть уникальный индекс.

37
задан Peter Mortensen 22 October 2015 в 08:09
поделиться

5 ответов

  • 1
    спасибо osgx. Ваш ответ звучит очень интересным. Я нашел эквивалентный ответ gossamer-threads.com/lists/xen/devel/185419 . От которого я понимаю, что constant_tsc + nonstop_tsc еще эквивалентны инварианту (через процессоры) с немногими предположение относительно BIOS/mobo. Мои старые тесты не показали дрейфов между CPU - я только concerened о будущих тестах и о guarntee для работы на сайте для клиентов. Строка Buttom, с Вашим ответом, я чувствую себя больше уверенно, чем прежде; следовательно, I' ll принимают этот ответ и надежду на хороший:-), – avner 11 November 2010 в 07:52

Я был в состоянии отладить некоторые проблемы разработчика управления путем выполнения второго экземпляра VS, затем из первого VS, экземпляр делает "Отладку-> Присоединение к Процессу" и выбирает "devenv".

первый экземпляр VS - то, где Вы установите свои точки останова. Используйте второй экземпляр для загрузки разработчика, чтобы заставить код "разработчика" работать.

38
ответ дан Craig 22 October 2015 в 08:09
поделиться
  • 1
    Предварительные случаи Ваша система не поддерживают таймеры высокого разрешения? Что делает Вы добираетесь при выполнении этого кода: #include < время h> #include < stdio.h> #include < stdlib.h> международное основное () {в то время как (1) {структура timespec ts; clock_gettime (CLOCK_MONOTONIC, & ts); printf (" %ld %ld\n" ts.tv_sec, ts.tv_nsec); сон (1);} возвращаются 0;} – nir 31 August 2010 в 08:10

Я имел, это много раз происходит, и это - реальная боль.

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

, Если это не работает тогда компиляция попытки и определение исключения оттуда. Вы действительно летите слепой, который является проблемой. Вы могли тогда попытаться просто выполнить код и видеть, какое исключение повышено при выполнении его который должен дать Вам еще некоторую информацию.

А подход в последнюю минуту мог быть должен удалить весь несгенерированный код из формы и постепенно повторно представлять его для определения ошибки.

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

В основном, насколько я могу сказать, нет никакого реального пути вокруг проблемы кроме сильно ударить его немного!

1
ответ дан ljs 22 October 2015 в 08:09
поделиться
  • 1
    Спасибо, но я didn' t получают то же использование результатов, Sobel на grayscaled отображают & шаблон (см. вопрос). Изображение от, старая игра DOS - Земля 2140. – mnn 25 January 2011 в 13:20

Каждый отличается, и они могут иногда быть неясными. Как первый шаг, я сделал бы следующее:

  • управление исходным кодом Использования и часто сохраняют. Когда ошибка разработчика происходит, получите список всех изменений в затронутых средствах управления, которые недавно произошли и тестируют каждого, пока Вы не находите преступника
  • убедиться проверить стандартные программы инициализации включенных средств управления. Очень часто эти ошибки произойдут из-за некоторой ошибки или плохой зависимости, которую называют через конструктора по умолчанию для управления (ошибка, которая может только проявиться в VS)
0
ответ дан Yaakov Ellis 22 October 2015 в 08:09
поделиться
  • 1
    Хорошо, я использовал cvConvertAbsScale, чтобы заставить неграничные области быть нулем. (см. вопрос), Однако все еще мой Sobel isn' t то же как Ваш (особенно шаблон). Это могло быть то, что я использовал OpenCV, и Вы использовали GIMP для Sobel? – mnn 25 January 2011 в 14:07

Можно запустить второй экземпляр VS и присоединить его к первому экземпляру VS (Ctrl+Alt+P). В первом экземпляре задайте точки останова, во втором запустите конструктор, и точка останова срабатывает. Вы можете выполнить пошаговое выполнение кода, но функция "Изменить и продолжить" не будет работать.

Чтобы параметр "Изменить и продолжить" работал, задайте параметры отладки библиотеки управления для запуска VS с аргументом командной строки, являясь именем файла решения. Затем вы можете просто установить точки останова и нажать F5. Он будет отлаживаться так же, как пользовательский код! В качестве примечания, вы можете сделать это также надстройки VS и Office.

0
ответ дан 27 November 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: