Chirag удалил его, так что вот он снова:
adb shell ps | grep com.myapp | awk '{print $2}' | xargs adb shell kill
Это должно быть запущено за пределами эмулятора. Это одна длинная команда Unix, а не четыре команды с визуальным разделением. |
- это синтаксис, интерпретируемый вашей оболочкой (Ubuntu), которая затем выводит выходные данные из adb, grep и т. д. в следующий. В эмуляторе исполняется только ps
.
Три вещи я научился на горьком опыте за эти годы...
Первый, если Вы делаете обновления или удаляете на живых данных, сначала пишут Запрос Select с оператором Where, который Вы будете использовать. Удостоверьтесь, что это работает. Удостоверьтесь, что это корректно. Тогда предварительно ожидайте ОБНОВЛЕНИЕ/ОПЕРАТОР УДАЛЕНИЯ известного рабочего оператора Where.
Вы никогда не хотите иметь
DELETE FROM Customers
нахождение в Вашем запросе анализатор, ожидающий Вас для записи оператора Where... случайно, хит "выполняется", и Вы только что уничтожили свою таблицу Customer. Ой.
кроме того, в зависимости от Вашей платформы, узнают, как взять quick'n'dirty резервное копирование таблицы. В SQL Server 2005,
SELECT *
INTO CustomerBackup200810032034
FROM Customer
скопирует каждую строку со всей таблицы Customer в новую таблицу по имени CustomerBackup200810032034, который можно тогда удалить, как только Вы сделали свои обновления и удостоверились, что все в порядке. Если худшее происходит, намного легче восстановить недостающие данные из этой таблицы, чем попытаться восстановить резервное копирование прошлой ночи от диска или ленты.
Наконец, опасаться каскада удаляет избавление от материала, который Вы не намеревались удалить - проверяют отношения Ваших таблиц и ключевые ограничения прежде, чем изменить что-либо.
Создайте пользователя только для чтения (или заставьте DBA делать это), и только используйте того пользователя для рассмотрения DB. Добавьте соответствующие полномочия к схеме так, чтобы можно было просмотреть содержание сохраненных процедур/представлений/триггеров/и т.д. но не имеют способность изменить их.
Я всегда комментирую любые разрушительные запросы (вставьте, обновите, удалите, отбросьте, изменитесь) при выписывании специальных запросов в Query Analyzer. Тем путем единственный способ выполнить их, состоит в том, чтобы выделить их, не выбирая прокомментированную часть, и нажать F5.
я также думаю, что это - хорошая идея, как уже упомянуто, записать Ваш, где оператор сначала, с выбором, и гарантирует изменение правильных данных.
Я добавлю к рекомендациям выполнения, НАЧИНАЮТ TRAN перед Вашим ОБНОВЛЕНИЕМ, просто не забывайте на самом деле делать ФИКСАЦИЮ; можно нанести такой же ущерб при отъезде незафиксированной транзакции открытой. Не становитесь отвлеченными телефонами, коллегами, ланч и т.д., когда посреди обновлений или Вы найдете, что все остальные заблокированы вплоть до Вас ФИКСАЦИЯ или ОТКАТ.
BEGIN TRANSACTION;
Тот путь можно откатывать после ошибки.
Сделайте резервное копирование сначала: это должен быть закон номер 1 sysadmining так или иначе
РЕДАКТИРОВАНИЕ : слияние, что сказали другие, удостоверяется, что Ваши ОБНОВЛЕНИЯ имеют соответствующие операторы Where.
Идеально, изменяя живую базу данных никогда не должен происходить (вне ВСТАВОК и базового обслуживания). Изменение структуры живого DB особенно чревато потенциальной плохой кармой.
Внесите свои изменения в копию, и когда Вы будете удовлетворены, затем примените фиксацию для проживания.
Часто, прежде чем я делаю ОБНОВЛЕНИЕ или УДАЛЯЮ, я пишу эквивалентный ВЫБОР.
НИКОГДА не делайте обновление, если Вы не находитесь в НАЧАТЬ TRAN t1 - не в dev базе данных, не в производстве, не нигде. НИКОГДА не выполните TRAN t1 ФИКСАЦИИ вне комментария - всегда тип
--COMMIT TRAN t1
и затем выберите оператор для выполнения его. (Очевидно, это только относится к клиентам запроса GUI.), Если Вы делаете эти вещи, это станет второй натурой, чтобы сделать их, и Вы не потеряете едва времени.
у меня на самом деле есть макрос "обновления", который вводит это. Я всегда вставляю это в настроить мои обновления. Можно сделать подобный для, удаляет и вставляет.
begin tran t1
update
set
where
rollback tran t1
--commit tran t1
Всегда удостоверяйтесь свои ОБНОВЛЕНИЯ, и УДАЛЯЕТ, имеют надлежащий оператор Where.
Отвечать на мой собственный вопрос:
При записи оператора обновления, запишите его не в порядке.
UPDATE [table-name]
WHERE [conditions]
SET [columns-and-values]
Выбор строк, которые Вы хотите обновить перед высказыванием, что оценивает Вас, хотят измениться, намного более безопасно, чем выполнение его в другом порядке. Это лишает возможности update person set email = 'bob@bob.com'
находиться в Вашем окне запроса, готовом быть выполненным неуместным нажатием клавиши, готовым испортить каждую строку в таблице.
Редактирование: Как другие сказали, запишите WHERE
, пункт для Вашего удаляет перед записью DELETE
.
Как пример, я создаю SQL как это
--Update P Set
--Select ID, Name as OldName,
Name='Jones'
From Person P
Where ID = 1000
, я выделяю текст от конца до Выбора и выполняю тот SQL. Как только я проверяю, что это вытягивает запись, которую я хочу обновить, я поразил shift-up, чтобы выделить оператор Update и выполнить это.
Примечание, что я использовал псевдоним. Я никогда не обновляю имя таблицы explicity. Я всегда использую псевдоним.
, Если я делаю это в сочетании с транзакциями и откатом/фиксациями, я действительно, действительно в безопасности.
Мой № 1 способ быть осторожным с живой базой данных? Не касайтесь его.:)
Резервные копии могут возместить ущерб, который Вы причиняете базе данных, но Вы, все еще, вероятно, представите отрицательные побочные эффекты во время того промежутка времени.
, Неважно, то, как твердый Вы думаете сценарий, с которым Вы работаете, выполните его через цикл испытаний. Даже если "цикл испытаний" означает выполнять сценарий против Вашего собственного экземпляра базы данных, удостоверьтесь, что Вы делаете это. Намного лучше представить дефекты на Вашем локальном поле, чем продуктивная среда.
Пара других вещей я нашел полезными:
при использовании MySQL, включите Безопасные обновления
, Если у Вас есть DBA, попросите, чтобы они сделали это.
я 've нашел, что эти 3 вещи помешали мне причинять любой серьезный вред.
ну, это обо всем, о чем я могу думать теперь. Возьмите полужирные проходы, и Вы видите то, что является № 1 для меня.;-)
Возможно, рассмотрите не использование, любой удаляет или отбрасывает вообще. Или, возможно, уменьшите полномочия пользователя так, чтобы только специальный пользователь DB мог удалить/отбросить вещи.
Если Вы используете Oracle или другую базу данных, которая поддерживает ее, проверьте свои изменения прежде, чем сделать ФИКСАЦИЮ.
Данные должны всегда развертываться для проживания с помощью сценариев, которые могут репетироваться так много раз, как они требуются, чтобы разбираться в нем на dev. Когда существуют зависимые данные для сценария, чтобы работать правильно на dev, подготовить его соответственно - Вам не может сойти с рук этот шаг, если Вы действительно хотите быть осторожными.
Скопируйте или выведите базу данных перед запуском.
Для прибавления к какой сказанный Wayne запишите Ваш WHERE
перед именем таблицы в DELETE
или UPDATE
оператор.
СОЗДАЙТЕ РЕЗЕРВНУЮ КОПИЮ СВОИХ ДАННЫХ. Изученный, что один твердый способ работать с базами данных клиентов регулярно.
Мое правило (как разработчик приложения): не касайтесь его! Это - то, для чего обученные DBAs. Heck, я даже не хочу разрешение коснуться его.:)
Различные цвета на среду: мы имеем, устанавливают нашего разработчика PL\SQL (IDE для Oracle) так, чтобы, когда Вы входите в систему к производственному DB, все окна были в ярком красном. Некоторые пошли до присвоения различного цвета для dev и теста также.
Удостоверьтесь, что Вы определяете где пункт при удалении записей.
всегда тестируйте любые запросы вне выбора на данных разработки сначала, чтобы гарантировать, что это оказывает корректное влияние.
Если я обновляю базу данных со сценарием, я всегда удостоверяюсь, что поместил точку останова или два в начале моего сценария, на всякий случай я поразил выполнение/выполнение случайно.