我最近遇到了一个问题,我注意到 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) 我使用的是 pgAdmin 版本 1.10.5,并且我已经检查了属性和菜单选项,但找不到有关该主题的任何内容。
例如,我只想生成一个脚本,其中包含我为架构创建的函数。如果我右键单击数据库节点并选择备份,它可以选择为架构创建脚本,但它会创建所有对象。我只想要功能。
最近开始学习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 的值设置为 ''?
我不知道这方面的细节,所以有人可以解释一下吗?
是否可以暂时禁用触发器,但仅针对一张表。
例如,我有一个表,带有插入、更新和删除触发器的 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) 正如问题所述,max_allowed_packeton的影响(如果有的话)是LOAD LOCAL INFILE什么?
将其设置为大值是否会快速将 700MB 等大尺寸数据文件加载到数据库中?
想象一个只有 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) 我们对我们的 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) 我有一个带有 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% 已完成
我想将所有用户和角色对象从 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]
但是此命令不会为我导出所需的对象。
我只想导出:
这可能吗?
我正在做一个数据库设计,用于存储搜索表单的搜索关键字,用于按日期、月份和年份生成最流行的搜索关键字报告。我做了一个简单的架构:
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响应超时)无法显示报告。
他的 …
mysql ×5
postgresql ×2
cache ×1
export ×1
import ×1
oracle-10g ×1
pgadmin ×1
process ×1
trigger ×1