Вы можете извлечь строки в цикле и запустить color_tile()
для них.
library(tidyverse)
library(knitr)
library(kableExtra)
library(formattable)
set.seed(1)
df <- data.frame(letters = letters[1:5],
foo = rnorm(5, 20),
bar = rnorm(5, 20),
baz = rnorm(5, 20),
bash = rnorm(5, 20),
stringsAsFactors = FALSE)
for(i in 1:nrow(df)) df[i,] <- color_tile("pink", "lightblue")(df[i,])
df %>%
kable(escape = F) %>%
kable_styling("hover", full_width = F) %>%
column_spec(5, width = "3cm") %>%
add_header_above(c(" ", "Hello" = 2, "World" = 2))
Вот библия на поиске и устранении неисправностей мертвой блокировки:
http://blogs.msdn.com/bartd/archive/2006/09/09/Deadlock-Troubleshooting_2C00_-Part-1.aspx
Эта статья Brad McGehee является хорошим местом для запуска.
См. также здесь: Превентивные Уведомления о Мертвой блокировке
Необходимо выполнить трассировку профиля Мертвой блокировки, в то время как ошибки происходят. Статья Brad McGehee является обзором. Необходимо определить два незаконных процесса. После этого рассмотрите код на двух страницах для наблюдения, какие команды SQL даются и как часто. Большую часть времени я нашел, что просто рассмотрение выполняемого кода SQL и знающий, как часто это работает, быстро определит конфликт. Фиксация его иногда занимает больше времени...
Вы могли сделать, как сообщение об ошибке предполагает, и заставьте программу повторять транзакцию!
Зависит очень от того, насколько "атомарный" транзакция то, хотя! т.е. Если Вы были заведены в тупик его likly, что некоторый другой процесс успешно обновил строку, Вы интересуетесь. Все еще имеет смысл применять обновление строки при этих обстоятельствах?
По крайней мере подарите пользователю более хорошее сообщение об ошибке ("Другой пользователь, изменил xxxx, который Вы пытались обновить. Рассмотрите новые значения и попробуйте еще раз.)