我遇到了一个奇怪的MySQL错误,似乎与数据库的read-only标志有关.使用MySQL的Web应用程序在Debian 7.9上运行.它运行良好数周,如果不是更多,而突然,尝试访问应用程序驱动的网站开始在空白网页上产生以下错误消息:
错误:500 - SQLSTATE [HY000]:常规错误:1290 MySQL服务器使用--read-only选项运行,因此无法执行此语句
以下是我在调查过程中执行的步骤:
read-only标志);read-only在MySQL配置中找到标志.file(my.cnf) - 找不到它,但是读到该标志的默认值仍为OFF;验证了文件系统以确保有足够的磁盘空间(df -h):
Filesystem Size Used Avail Use% Mounted on
udev 10M 0 10M 0% /dev
tmpfs 3.2G 1.4M 3.2G 1% /run
/dev/disk/by-uuid/xxxxxxxxxxxxxxxxx 113G 14G 94G 13% /
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.3G 72K 7.3G 1% /run/shm
跑mysqlcheck --all-databases:所有的桌子都没事;
free):
total used free shared buffers cached
Mem: 32898332 2090268 30808064 0 425436 …不要saveRDS和readRDS,相应地,保存和恢复所有对象的属性,包括应用程序创建者(通过attr)?我试图使用这种方法而不是save和load,试图找到我的问题的解决方法链接在下面.但是,似乎并非如此,除非我做错了什么:我可以访问R数据对象的属性而无需从文件中完全加载对象吗?.
这个问题是我尝试从文档和R包创建可重现报告的一些经验的必然结果.虽然看起来转换是从RStudio(按钮)内自动完成的,但是我在RStudio()之外做同样的尝试失败了,因为根据消息,我的系统缺乏.这很可能是错误的,因为RStudio以某种方式设法执行转换.因此,它很可能是访问和/或路径问题.R Markdownknitrrmarkdown.Rmd => HTMLKnit HTMLRscript -e 'library(rmarkdown); render("knitr-example-slides-1.Rmd")'pandoc
如果不知道RStudio维护的位置pandoc和访问细节,我决定自己安装 pandoc.不幸的是,sudo apt-get install pandoc由于pandocUbuntu的trusty存储库(14.04LTS)的当前版本是1.12.2.1 这一事实并不是很有帮助.根据rmarkdown消息,需要1.12.3或更高版本."没什么大不了的",我想,并且pandoc在存储库(http://johnmacfarlane.net/pandoc/installing.html)版本太旧的情况下遵循安装说明.这需要安装Haskell平台,这个平台非常大,输出相当冗长.过了一段时间,我终于遇到了以下失败消息:
[ 6 of 57] Compiling Text.Pandoc.Readers.TeXMath ( src/Text/Pandoc/Readers/TeXMath.hs, dist/build/Text/Pandoc/Readers/TeXMath.o )
src/Text/Pandoc/Readers/TeXMath.hs:30:38:
Ambiguous occurrence `readTeXMath'
It could refer to either `Text.Pandoc.Readers.TeXMath.readTeXMath',
defined at src/Text/Pandoc/Readers/TeXMath.hs:56:1
or `Text.TeXMath.readTeXMath',
imported from `Text.TeXMath' at src/Text/Pandoc/Readers/TeXMath.hs:33:1-19
(and originally defined …Run Code Online (Sandbox Code Playgroud) 为什么 RStudio 不在RStudio 的选项卡中显示 的结构Makefile,尤其是特定目标Build?我希望它显示它们并允许人们构建那些特定的目标。RStudio 和 RStudio Server 中是否缺少此功能,或者它在那里,我只需要知道在哪里启用它?
最近我在我的R代码中遇到了以下问题.在一个函数中,接受一个数据框作为参数,我需要添加(或替换,如果它存在)一个列,其中的数据是根据数据框的原始列的值计算的.我编写了代码,但是测试显示我使用的数据框提取/替换操作导致了对象的特殊(用户定义)属性的丢失.
在通过阅读R文档(http://stat.ethz.ch/R-manual/R-patched/library/base/html/Extract.html)意识到这一点并确认该行为后,我决定非常简单地解决问题 -通过在提取/替换操作之前保存属性并在之后恢复它们:
myTransformationFunction <- function (data) {
# save object's attributes
attrs <- attributes(data)
<data frame transformations; involves extract/replace operations on `data`>
# restore the attributes
attributes(data) <- attrs
return (data)
}
Run Code Online (Sandbox Code Playgroud)
这种方法奏效了.然而,偶然地,我遇到了另一条R文档(http://stat.ethz.ch/R-manual/R-patched/library/base/html/Extract.data.frame.html),它提供了恕我直言解决相同问题的有趣(并且,可能是更通用的?)替代方法:
## keeping special attributes: use a class with a
## "as.data.frame" and "[" method:
as.data.frame.avector <- as.data.frame.vector
`[.avector` <- function(x,i,...) {
r <- NextMethod("[")
mostattributes(r) <- attributes(x)
r
}
d …Run Code Online (Sandbox Code Playgroud) 我make总是重建Makefile目标(make 总是重建 Makefile 目标)的问题及其调查发现了另一个问题,这是这个问题的主题。重复执行以下R代码导致对象属性丢失数据转换操作期间。
为了记录,我不得不说我已经写过这个主题(在提取/替换操作期间保留对象属性的方法),但是这个问题和答案更笼统(我不正确,简单的保存属性是有效的 - 它在撰写本文时为我工作,因为当时我还没有执行操作,这对对象的属性有潜在危险)。
以下是我的 R 代码的摘录,其中我遇到了属性丢失的问题。
##### GENERIC TRANSFORMATION FUNCTION #####
transformResult <- function (dataSource, indicator, handler) {
fileDigest <- base64(indicator)
rdataFile <- paste0(CACHE_DIR, "/", dataSource, "/",
fileDigest, RDS_EXT)
if (file.exists(rdataFile)) {
data <- readRDS(rdataFile)
# Preserve user-defined attributes for data frame's columns
# via defining new class 'avector' (see code below)). Also,
# preserve attributes (comments) for the data …Run Code Online (Sandbox Code Playgroud) 我有一个复杂的列表,需要根据布尔元素的值从中选择一个子集(我需要hidden值等于的记录FALSE).我已经尝试了以下代码,基于索引向量,但它失败了(如此输出结尾所示):
startups <- data$startups[data$startups$hidden == FALSE]
Run Code Online (Sandbox Code Playgroud)
或者,或者:
startups <- data$startups[!as.logical(data$startups$hidden)]
Run Code Online (Sandbox Code Playgroud)
交互式R会话证明数据存在:
Browse[1]> str(data$startups, list.len=3)
List of 50
$ :List of 23
..$ id : num 357496
..$ hidden : logi FALSE
..$ community_profile: logi FALSE
.. [list output truncated]
$ :List of 2
..$ id : num 352159
..$ hidden: logi TRUE
$ :List of 2
..$ id : num 352157
..$ hidden: logi TRUE
[list output truncated]
Browse[1]> data$startups[data$startups$hidden …Run Code Online (Sandbox Code Playgroud) 以下是我正在经历和坚持的情况的可重现的示例(它是我用于评估合并数据集的各种方法的测试客户端,用于我的论文研究).
testData <- "https://github.com/abnova/test/blob/master/mergeTestData.zip?raw=true"
tmpFile <- tempfile()
tmpDir <- tempdir()
download.file(testData, tmpFile, method = 'curl',
extra = '-L', quiet = TRUE)
testFiles <- unzip(tmpFile, exdir = tmpDir)
# To enable desired merge option, uncomment corresponding line
#MERGE_OPTION <- "lapply_merge"
#MERGE_OPTION <- "lapply_merge2"
#MERGE_OPTION <- "reduce_merge"
#MERGE_OPTION <- "reduce_merge2"
#MERGE_OPTION <- "reshape"
#MERGE_OPTION <- "plyr"
#MERGE_OPTION <- "dplyr"
MERGE_OPTION <- "data.table"
#MERGE_OPTION <- "data.table2"
loadData <- function (dataFile) {
if (file.exists(dataFile)) {
data <- readRDS(dataFile) …Run Code Online (Sandbox Code Playgroud) 我正在尝试将指定目录中所有文件的数据框对象中的数据加载到单个数据表中。这就是我尝试这样做的方式: .RData
library(data.table)
fileList <- list.files("../cache/FLOSSmole", pattern="\\.RData$", full.names=TRUE)
dataset <- rbindlist(lapply(fileList, FUN=function(file) {as.data.table(load(file))}))
Run Code Online (Sandbox Code Playgroud)
但是,结果与预期不同(包含所有数据的单个数据表) - 它仅包含源文件中数据框对象的名称.RData:
> str(dataset)
Classes ‘data.table’ and 'data.frame': 39 obs. of 1 variable:
$ V1: chr "lpdOfficialBugTags" "lpdLicenses" "lpdMilestones" "lpdSeries" ...
- attr(*, ".internal.selfref")=<externalptr>
> head(dataset)
V1
1: lpdOfficialBugTags
2: lpdLicenses
3: lpdMilestones
4: lpdSeries
5: lpdProjects
6: lpdProgrammingLanguages
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?非常感谢您的帮助!
我的R环境:
> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale: …Run Code Online (Sandbox Code Playgroud) 我的一个R脚本产生了一条消息,表明在处理过程中出现了一些警告。但是,由于这不是交互式会话,因此我无法warnings()访问警告。最新的R 会话警告日志文件的标准位置(如果有)是什么,以便我可以查看它们?谢谢!
我试图启动 Phabricator 的Notification Server,但遇到以下错误:
/phabricator/phabricator/bin/aphlict start
[2015-11-16 18:41:08] EXCEPTION: (FilesystemException) Requested path '/var/tmp/aphlict/pid' is not writable. at [<phutil>/src/filesystem/Filesystem.php:1081]
arcanist(head=master, ref.master=9dd6eafb5254), phabricator(head=master, ref.master=50d158a8c4d9), phutil(head=master, ref.master=e9ed72483a14)
#0 Filesystem::assertWritable(string) called at [<phutil>/src/filesystem/Filesystem.php:73]
#1 Filesystem::assertWritableFile(string) called at [<phutil>/src/filesystem/Filesystem.php:89]
#2 Filesystem::writeFile(string, string) called at [<phabricator>/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php:140]
#3 PhabricatorAphlictManagementWorkflow::willLaunch() called at [<phabricator>/src/applications/aphlict/management/PhabricatorAphlictManagementWorkflow.php:249]
#4 PhabricatorAphlictManagementWorkflow::executeStartCommand() called at [<phabricator>/src/applications/aphlict/management/PhabricatorAphlictManagementStartWorkflow.php:15]
#5 PhabricatorAphlictManagementStartWorkflow::execute(PhutilArgumentParser) called at [<phutil>/src/parser/argument/PhutilArgumentParser.php:406]
#6 PhutilArgumentParser::parseWorkflowsFull(array) called at [<phutil>/src/parser/argument/PhutilArgumentParser.php:301]
#7 PhutilArgumentParser::parseWorkflows(array) called at [<phabricator>/support/aphlict/server/aphlict_launcher.php:23]
Run Code Online (Sandbox Code Playgroud)
有问题的目录似乎是可写的:
ls -l /var/tmp/aphlict
total 4
drwxr-xr-x 2 root root 4096 Nov 16 …Run Code Online (Sandbox Code Playgroud) 我重新设计Makefile了论文项目的大部分文件,以便正确反映工作流程(为项目子目录中的目标创建依赖项的制定规则).但是,在特定的子目录(prepare)中,即使没有依赖项更改,也make 始终重建所有目标.这种意外行为可能是什么原因?
注意:sf.done是一个真实的文件(类型,我称之为"标记文件"),位于不同的子目录中,并在完成数据收集(import)时创建/更新目标的相关步骤transform.
准备/ Makefile文件:
IMPORT_DIR=../import
prepare: import \
transform \
cleanup \
merge \
sample
import: $(IMPORT_DIR)/sf.done
transform: transform.done
cleanup: cleanup.done
merge: merge.done
sample: sample.done
transform.done: transform.R import
@$(RSCRIPT) $(R_OPTS) $<
@touch $@
cleanup.done: cleanup.R transform
@$(RSCRIPT) $(R_OPTS) $<
@touch $@
merge.done: merge.R cleanup
@$(RSCRIPT) $(R_OPTS) $<
@touch $@
sample.done: sample.R merge
@$(RSCRIPT) $(R_OPTS) $<
@touch $@
.PHONY: import transform cleanup merge …Run Code Online (Sandbox Code Playgroud) r ×10
attributes ×2
data.table ×2
dataframe ×2
environment ×2
makefile ×2
object ×2
rdata ×2
attr ×1
database ×1
debian ×1
dependencies ×1
extract ×1
gnu-make ×1
indexing ×1
knitr ×1
logging ×1
merge ×1
mysql ×1
nested-lists ×1
pandoc ×1
persistence ×1
persistent ×1
phabricator ×1
r-markdown ×1
rstudio ×1
session ×1
subset ×1
user-defined ×1
warnings ×1
workflow ×1