Что-то, о чем здесь не упоминалось, хотя и немного похоже на вторую альтернативу принятого ответа, но отличается и невысокой стоимостью для большого иерархического запроса и простых элементов (insert update delete), будет добавлять столбец постоянных путей для каждого элемента.
some like:
id | name | path
19 | category1 | /19
20 | category2 | /19/20
21 | category3 | /19/20/21
22 | category4 | /19/20/21/22
Пример:
-- get children of category3:
SELECT * FROM my_table WHERE path LIKE '/19/20/21%'
-- Reparent an item:
UPDATE my_table SET path = REPLACE(path, '/19/20', '/15/16') WHERE path LIKE '/19/20/%'
Оптимизировать длину пути и ORDER BY path
, используя кодировку base36, вместо этого действительный числовой идентификатор пути
]
// base10 => base36
'1' => '1',
'10' => 'A',
'100' => '2S',
'1000' => 'RS',
'10000' => '7PS',
'100000' => '255S',
'1000000' => 'LFLS',
'1000000000' => 'GJDGXS',
'1000000000000' => 'CRE66I9S'
https://en.wikipedia.org/wiki/Base36
Подавление разделителя '/' с помощью фиксированной длины и отступов до encoded id
Подробное объяснение оптимизации здесь: https://bojanz.wordpress.com/2014/04/25/storing-hierarchical-data-materialized-path/
TODO
построение функции или процедуры для разделения пути для возвращающих предков одного элемента
Я решил эту проблему много месяцев спустя, перейдя на совершенно новую среду. В частности, новая машина со свежей установкой Windows 8. Я также избегал установки пакета Comodo (я не знаю, что это вызывало проблему).
Таким образом, хотя это и не является прямым решением проблемы (все еще неясно, что ее вызвало), возможно, это могло бы послужить еще одним примером, когда обходной путь или боковое разрешение проблемы иногда является хорошим последним средством.
Вы можете попробовать это:
Это сработало для меня. Я попробовал это на эмуляторе в затмении. Требуется некоторое время, прежде чем приложение будет запущено. Для меня это заняло 33 секунды. Подождите, пока в консоли не появится сообщение «Удачи!»
Сначала необходимо обновить все драйверы вашей системы, затем установить Android Studio базовым способом, после чего ошибка будет решена. Попробуйте сначала, потому что я также сталкиваюсь с этой проблемой несколько раз ....
Если вы не в учетной записи администратора, убедитесь, что родительский контроль отключен. Это сработало для меня.
Просто отключение и подключение телефона (физическое) работает. Это случается со мной (слишком много раз), когда телефон подключен слишком долго, и ничего не делается.
Попробуйте это ...
adb kill-server
adb start-server
вывод будет:
daemon not running. starting it now on port 5037
daemon started successfully
Начните свое затмение.
Запустите эмулятор, если вы используете физическое устройство, убедитесь, что ваш кабель не ослаблен и правильно подключен
У меня была та же проблема; скопировав * .apk в память сотового телефона и установив его непосредственно на устройство (с помощью Myfiles и выбрав * .apk), все заработало. Я подозреваю, что есть проблема с USB-соединением (слишком много ошибок, Eclipse слишком медленный из-за других процессов, использующих USB и т. Д.).
Когда это происходит с нами на физических устройствах, мы обычно пытаемся это исправить, отключив его, включив «режим отладки Android» на устройстве и повторно подключившись.