小编Jim*_*Fan的帖子

在表之间查找外键约束列信息

表A具有表B(id)的外键约束(类型).但是,type不为null,id可以为空.

我正在尝试使用information_schema构建一个查询,该查询将查看外键约束并匹配列类型和可空列以查看它们是否同步,但是我遇到逻辑问题.

select kcu.table_name, kcu.column_name, c.column_type, c.is_nullable,kcu.referenced_table_name, kcu.referenced_column_name,c.column_type, c.is_nullable
from key_column_usage kcu
inner join columns c on c.table_schema=kcu.table_schema and c.column_name=kcu.column_name and c.table_name=kcu.table_name
where kcu.referenced_table_name='Table_B' and kcu.table_name='Table_A';
Run Code Online (Sandbox Code Playgroud)

我知道这种语法不正确 - 这就是我迄今为止所能完成的所有内容.我希望能够为数据库中的每个表执行此操作,并按table_name,然后是column_name对其进行排序.它可以排除column_type和is_nullable字段相同的列.

mysql information-schema percona

9
推荐指数
1
解决办法
490
查看次数

试图隔离每个主机的pt-query-digest

我遇到一些困难,想出正确的语法来为我的慢查询日志文件提取特定的主机信息:

我正在使用以下内容:

sudo pt-query-digest mysql-slow.log --since "2017-05-07 22:00:00" --until "2017-05-08 22:00:00" --filter ‘$event->{host} !~ m/^ip-1-1-1-1/’ > slow.log
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我试图排除所有1.1.1.1的IP.我无法弄清楚出了什么问题.

mysql bash percona mysql-slow-query-log pt-query-digest

6
推荐指数
1
解决办法
144
查看次数

如何在MySQL中提取部分Base64编码的字符串?

我的数据库中有一个编码的字段.在字段上使用from_base64之后,它看起来像这样:

<string>//<string>//<string>/2017//06//21//<string>//file.txt
Run Code Online (Sandbox Code Playgroud)

在路径的开头可能存在未确定数量的字符串,但是,日期(YYYY // MM // DD)将始终具有右侧的两个字段(字符串后跟文件扩展名).

我想按此YYYY // MM // DD模式排序,并计算具有此日期的所有路径的计数.

所以基本上我想这样做:

select '<YYYY//MM//DD portion of decoded_path>', count(*) from table group by '<YYYY//MM//DD portion of decoded_path>' order by '<YYYY//MM//DD portion of decoded_path>';
Run Code Online (Sandbox Code Playgroud)

mysql base64 substring text-manipulation string-function

6
推荐指数
1
解决办法
295
查看次数

删除与特定字符串格式不匹配的文件

我有一组名称相似的文件:

TEXT_TEXT_YYYYMMDD
Run Code Online (Sandbox Code Playgroud)

文件名示例:

My_House_20170426
Run Code Online (Sandbox Code Playgroud)

我正在尝试删除所有与此格式不匹配的文件。每个文件都应该有一个文本字符串,后跟一个下划线,然后是另一个文本字符串和另一个下划线,然后是 YYYYMMDD 日期戳。

有人可以提供一些关于如何构建删除与此格式不匹配的文件的语句的建议find吗?remove

linux macos bash find

4
推荐指数
1
解决办法
1036
查看次数

在Linux Mint 13上安装VMware Tools的问题

我按照这里的安装程序进行了操作:

http://install-climber.blogspot.com/2012/08/linuxmint13cinnamoninstallvmwaretools.html

但是,当我执行命令"/ usr/bin/vmware-user"时,我收到以下错误:

jay-virtual-machine vmware-tools-distrib # /usr/bin/vmware-user
jay-virtual-machine vmware-tools-distrib # /usr/lib/vmware-tools/lib/libstdc++.so.6/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /usr/lib/x86_64-linux-gnu/libproxy.so.1)
Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiolibproxy.so
jay-virtual-machine vmware-tools-distrib # 
Run Code Online (Sandbox Code Playgroud)

我在VMware Workstation 9.0上运行.

我是Linux新手,所以任何方向都能很好地为我服务.

谢谢,杰伊

vmware vmware-tools vmware-workstation linux-mint

3
推荐指数
1
解决办法
5122
查看次数

使用-v选项以grep -A反转多行grep结果

我有一个类似以下的列表:

Name_JR_1
1.1.1.1
Name_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3
Run Code Online (Sandbox Code Playgroud)

如果要使用以下数字语法选择所有关联的名称,则可以查找模式并使用该-A1选项打印匹配的行以及after上下文或下一行,如下所示:

grep "JR" -A1 file_name

这将打印我想要的:

Name_JR_1
1.1.1.1
Run Code Online (Sandbox Code Playgroud)

但是,我需要一种解决方案,可以删除所有与搜索模式匹配的条目。但是,使用-v带有此语法的选项不会给我想要的结果:

grep -v "JR" -A1 file_name
Run Code Online (Sandbox Code Playgroud)

我希望此命令后的输出如下所示:

Names_SR_1
2.2.2.2
Name_NONE_1
3.3.3.3.
Run Code Online (Sandbox Code Playgroud)

linux grep text-processing

2
推荐指数
1
解决办法
178
查看次数

仅当数组中的元素彼此相邻时才删除它们

我有一个由如下信息组成的数组:

['Jay', 'Jay', 'Jay', 'Spiders', 'Dogs', 'Cats', 'John', 'John', 'John', 'Dogs', 'Cows', 'Snakes']
Run Code Online (Sandbox Code Playgroud)

我要做的是删除重复的条目,但前提是它们紧挨着彼此发生.

正确的结果应如下所示:

['Jay', 'Spiders', 'Dogs', 'Cats', 'John', 'Dogs', 'Cows', 'Snakes']
Run Code Online (Sandbox Code Playgroud)

我正在使用PHP,但任何类型的逻辑都能帮助我解决这个问题.

这是我到目前为止尝试过的一些代码:

$clean_pull = array();
$counter = 0;
$prev_value = NULL;

foreach($pull_list as $value) {
    if ($counter == 0) {
        $prev_value = $value;
        $clean_pull[] = $value;
    }
    else {
        if ($value != $pre_value) {
            $pre_value = value;
        }
    }
    echo $value . '<br>';
}
Run Code Online (Sandbox Code Playgroud)

弗朗西斯,当我运行以下代码时:

$lastval = end($pull_list);
for ($i=count($pull_list)-2; $i >= 0; $i--){
    $thisval = $pull_list[$i]; …
Run Code Online (Sandbox Code Playgroud)

php arrays

1
推荐指数
1
解决办法
81
查看次数

查询结果不准确

我有以下查询,它为我提供了准确的结果:

SELECT t.id
    FROM titles t
ORDER BY t.id
Run Code Online (Sandbox Code Playgroud)

我的结果是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Run Code Online (Sandbox Code Playgroud)

我的第二个查询也为我提供了准确的结果:

SELECT t.id
FROM titles t 
    JOIN subscriptions s
        ON t.id = s.title
WHERE s.user=2
Run Code Online (Sandbox Code Playgroud)

结果:

10
11
14
Run Code Online (Sandbox Code Playgroud)

所以我想要做的是从第一个查询中收到第二个查询中没有显示的所有结果,所以我运行这个:

SELECT t.id
    FROM titles t
ORDER BY t.id NOT IN 
(
SELECT t.id
FROM titles t 
    JOIN subscriptions s
        ON t.id = s.title
WHERE s.user=2 
);
Run Code Online (Sandbox Code Playgroud)

但我的结果最终结果如下:

14
11
10
13
12
9
8
7
6 …
Run Code Online (Sandbox Code Playgroud)

mysql sql

0
推荐指数
1
解决办法
45
查看次数