我不是MySQL专家.
我有一个脚本安装MySQL,启动mysqld,然后用于mysql进行一些初始化.
目前,为了完成这项工作,我进入一个循环(为混合多种语言的伪代码道歉):
mysqld_safe /* ... */ & /* ampersand to start in background so we can continue */
while(fileDoesNotExist("/tmp/mysql.sock")) {
sleepFor100ms();
}
mysql -u root /* and so forth */ initialize.sql
Run Code Online (Sandbox Code Playgroud)
这似乎工作(!)但有多个问题:
/tmp/mysql.sock是否很聪明.然而,它比尝试(例如)消费和解析stdout(或者是stderr?)mysqld_safe来判断服务器是否已经启动要容易得多.
我的一个狭隘的问题是,是否有一种方法可以发出阻止启动mysqld:我可以发出任何阻塞直到数据库启动的命令,然后退出(并分离,可能会留下一个PID文件),并有一个伴随停止命令吗?(或者可能允许我读取PID文件并发出我自己的SIGTERM?)
我的更广泛的问题是,我是在正确的轨道上,还是有一些完全不同和更容易(对我来说"更容易"它必须是轻量级的;我对安装一堆像Puppet这样的工具不感兴趣DbMaintain/Liquibase或其他什么方法解决我所阐述的问题?也就是说,从.gz包含MySQL 的文件开始,安装userland MySQL并初始化数据库?
为什么以下使用 DOMParser 会导致 HTML 与用作输入的 HTML 不同?它删除 DOCTYPE 和顶级元素之间的空格,删除文档元素 和 之间的空格head,并在 之前添加换行符</body>。
我已经在 Google Chrome、Firefox 和 Safari 中对此进行了测试;我还使用JSoup运行了类似的代码,并得到了完全相同的结果。所以我很确定这不是一个错误。我目前的理论是,这是由某处规范中的某种深奥解析规则引起的。但可能还有其他我误解的事情。
const html = `<!DOCTYPE html>
<html>
<head>
<title>1</title>
</head>
<body>
<div>
Hello, World!
</div>
</body>
</html>`;
const setText = function(id,string) {
document.getElementById(id).appendChild(document.createTextNode(string));
};
const documentToString = function(d) {
return Array.prototype.slice.call(d.childNodes).map(function(node) {
if (node.nodeType == node.ELEMENT_NODE) return node.outerHTML;
if (node.nodeType == node.DOCUMENT_TYPE_NODE) return new XMLSerializer().serializeToString(node);
throw new TypeError("" + node);
}).join("");
};
setText("raw", html);
var parsed = …Run Code Online (Sandbox Code Playgroud)我希望能够安装预提交钩子,但也能够在某些情况下(例如,WIP)即使在钩子失败时也能够提交。我可以从命令行使用git commit --no-verify( git commit -n)轻松完成此操作。但是除了提交消息的文本字段之外,我找不到任何可以影响 VSCode 中提交的内容。
我错过了它,还是它不存在?
我发现自己,作为工作流程的一部分,经常这样做:
topic)topic以便将其合并topicmainCI同时合并更改(在 GitHub 上,这意味着在我的情况下进行合并提交 - GitHub 显然不会在这里进行快进合并;请参阅此答案)main我一直在进行的更改的更新main相同,但是topicgit抱怨我的本地更改将被覆盖,因为我在本地修改了一些与上次提交相同的文件,所以我必须:git stashgit checkout maingit fetch; git merge origin/maingit stash pop我知道git命令有很多选项。有没有一种方法可以一步完成上述四步过程,或者更少的步骤(无需编写脚本)?合并总是干净利落地应用,因为origin/main和 的topic内容相同(但git历史不同)。
这个悬而未决的问题表明也许整个序列可以被替换为git checkout -m。那是对的吗?