小编Der*_*ney的帖子

有没有办法让 MySQL GROUP BY 利用尾随空格?

我最近遇到了一个问题,我注意到 MySQL 在发出 GROUP BY 时会忽略尾随空格。这是表:

CREATE TABLE `myTable` (
 `id` int(10) unsigned NOT NULL,
 `foo` varchar(255) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

这是我运行的示例查询(不是生产用途,但显示了我正在尝试修复的内容):

SELECT foo, CHAR_LENGTH(foo) FROM myTable
WHERE foo='bar'
GROUP BY foo
Run Code Online (Sandbox Code Playgroud)

这将返回一个结果集:

| foo  | CHAR_LENGTH(foo)  |
+------+-------------------+
| Bar  |                 4 |
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了“酒吧”的长度是三,而不是四。所以我去检查了个人条目(没有分组):

SELECT foo, CHAR_LENGTH(foo) FROM myTable
WHERE foo='bar'

| foo  | CHAR_LENGTH(foo)  |
+------+-------------------+
| Bar  |                 3 |
| Bar  |                 3 |
| Bar  |                 3 |
| Bar …
Run Code Online (Sandbox Code Playgroud)

mysql

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

如何为 pgAdmin 中的所有函数生成脚本?

我使用的是 pgAdmin 版本 1.10.5,并且我已经检查了属性和菜单选项,但找不到有关该主题的任何内容。

例如,我只想生成一个脚本,其中包含我为架构创建的函数。如果我右键单击数据库节点并选择备份,它可以选择为架构创建脚本,但它会创建所有对象。我只想要功能。

postgresql pgadmin

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

PGBouncer 的参数 server_reset_query 的目的是什么?

最近开始学习pgbouncer,但是对参数有一些不明白的地方server_reset_query

问题一:主要目的是server_reset_query什么?

问题2:pgbouncer的pool_mode有3种模式:session模式、transaction模式和statement模式。当 pool_mode 为 session 时,我们通常将
server_reset_query的值设置为 'DISCARD ALL'。当 pool_mode 为事务时,我们通常将 server_reset_query 的值设置为 ''?

我不知道这方面的细节,所以有人可以解释一下吗?

postgresql

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

仅对一张表禁用触发器

是否可以暂时禁用触发器,但仅针对一张表。

例如,我有一个表,带有插入、更新和删除触发器的 TableA。我也有一个具有相同触发器的表 B,但它们只影响表 A 中的某些列。

我现在有一个使用两个表的更新查询。我知道表 A 中的更新需要触发触发器,但表 B 中的更新绝对不需要触发触发器。所以我想禁用这些触发器,直到更新完成。

这可能吗?我正在使用 MySQL 5.1

[附录]

这是一个触发器表A本质上

BEGIN
    IF (OLD.status != 1 AND NEW.status = 2) THEN
        IF (OLD.geo_lat IS NOT NULL AND OLD.geo_long IS NOT NULL) THEN
            DELETE FROM geo WHERE datatype IN (3,4) AND foreignid = NEW.id;
        END IF;
    ELSEIF (OLD.Status = 1 AND NEW.Status != 2) THEN
        IF (NEW.geo_lat IS NOT NULL AND NEW.geo_long IS NOT NULL) THEN
            INSERT INTO geo (datatype, foreignid, long, lat, hostid, morton, status) …
Run Code Online (Sandbox Code Playgroud)

mysql trigger

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

max_allowed_pa​​cket 变量对 LOAD LOCAL INFILE 有什么影响吗?

正如问题所述,max_allowed_packeton的影响(如果有的话)是LOAD LOCAL INFILE什么?

将其设置为大值是否会快速将 700MB 等大尺寸数据文件加载到数据库中?

mysql

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

关于分组依据和自定义组的简单问题

想象一个只有 2 列的 MySQL 表:一个 id 和一个颜色名称。

通过这个查询,我知道每种颜色有多少个 id:

SELECT color_name, count(id) FROM color_table GROUP BY (color_name)

red:    10 
blue:   5 
yellow: 3
green:  1
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有办法可以指定“分组依据”一些自定义组?我的意思是,是否有一个查询会导致以下结果:

red: 10
colors different than red: 9
Run Code Online (Sandbox Code Playgroud)

mysql

6
推荐指数
2
解决办法
3437
查看次数

为什么 MySQL 在我们的动态 PHP 站点上缓存数据?

我们对我们的 PHP/MySQL 站点感到烦恼,因为它似乎从数据库缓存数据,而我们的 PHP 页面显示过时的记录。事实上,有些页面链接到已从数据库中完全删除的 URL,但它们不显示更新的记录,甚至不显示丢失的数据。

如果我们有耐心等待几个(未定义)小时,数据最终会显示出来。我已经通过 PHP 在所有页面上添加了常规的无缓存标头,但它似乎不会影响 MySQL 输出。

网站的 PHP 部分可以立即更新,并立即显示 HTML 等更改。有没有办法强制 MySQL 只从其查询中提取新数据?我认为这就是它的工作方式!

谢谢,克里斯

PS这是我用来尝试强制无缓存情况的php代码:

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Always modified
header("Cache-Control: private, no-store, no-cache, must-revalidate"); // HTTP/1.1 
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
Run Code Online (Sandbox Code Playgroud)

mysql cache

5
推荐指数
2
解决办法
9376
查看次数

无法杀死 SPID

我有一个带有 SP4 的 SQL Server 2005 Std (x64),它有一个我似乎无法杀死的过程。如果我查看 sys.dm_exec_requests,我会看到 SPID 103,wait_type 为 LCK_M_SCH_M,状态为 SUSPENDED,命令为 KILLED/ROLLBACK。然而,SPID 并没有消失。我什至可以执行 sp_who 103 并且我看到带有 KILLED/ROLLBACK 的 SPID。自从我杀死 SPID 以来,它的当前等待时间接近 20 小时。

此外,运行KILL 103 WITH STATUS ONLY返回 0% 已完成

sql-server-2005 process

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

根据所有者+数据库中的所有用户导出Oracle表

我想将所有用户和角色对象从 Oracle 10g 数据库导出到另一个。我用谷歌搜索,但我不知道如何去做。

首先我使用这个命令:

exp system/root@ [DB_Name] file= [Back_file_name] owner=( [Owner_Name] )

但问题是某些表设置取决于用户权限。因此我还想导出用户对象。

例如,可以使用以下命令导出所有对象:

exp system/root@ [DB_Name] Full=Y file= [Back_file_name]

但是此命令不会为我导出所需的对象。

我只想导出:

  • 按所有者名称排列的表
  • 全部用户
  • 也许角色

这可能吗?

export oracle-10g import

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

如何设计模式来存储搜索关键字

我正在做一个数据库设计,用于存储搜索表单的搜索关键字,用于按日期、月份和年份生成最流行的搜索关键字报告。我做了一个简单的架构:

CREATE TABLE SearchTerm (
 ID             INTEGER         PRIMARY KEY AUTOINCREMENT NOT NULL,
 SearchTerm     VARCHAR( 255 )  NOT NULL,
 Date           DATE            NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,表中的搜索词将是多余的,并使数据库增长更快。我想避免数据冗余。

此外,我不确定使用日期数据类型或 unix 时间戳是否会对更快地检索数据产生影响。

那么,我应该创建一个新表来存储通过 id 链接到主表的日期吗?例如,

CREATE TABLE SearchTerm (
 ID             INTEGER         PRIMARY KEY AUTOINCREMENT NOT NULL,
 SearchTerm     VARCHAR( 255 )  NOT NULL,
 Hit           INTEGER         NOT NULL,
 DateID         INTEGER         NOT NULL
);

CREATE TABLE DateofSearchTerm (
 DateID         INTEGER         PRIMARY KEY AUTOINCREMENT NOT NULL,
 Date           DATE            NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我关心的是随着数据库增长的性能。如果数据库设计不当,就会导致性能和瓶颈问题。

我的一个朋友做了一个分析网站,但进展不顺利。我发现表中有 300 万条记录,他的查询需要 3 多分钟才能返回结果。

而且他只创建了一张表,然后保存“事件名称”、“开始数据”、“结束日期”之类的。生成月报时,由于超时问题(服务器超时、查询超时、jquery响应超时)无法显示报告。

他的 …

database-design

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