是的,我将在他们两个上运行 strace ......但是,我想知道......
我试图在 MySQL 中删除一个表,但它抱怨“无法删除或更新父行:外键约束失败”......
问题
所以我有那个复杂的 MySQL 转储作为备份。不幸的是,备份很复杂,我们使用了邪恶的触发器。
我们的一些邪恶触发器有一个以 # 字符开头的注释行。
当我备份数据库时,生成的转储会保存 # 行。问题是当我进行恢复时。以# 开头的行被替换为空行。
所以我正在寻找一种方法来恢复以英镑开头的行的转储。
我正在运行以下(虚拟)查询
CREATE TABLE large_temp_table AS
SELECT a.*, b.*, c.*
FROM a
LEFT JOIN b ON a.foo = b.foo
LEFT JOIN c ON a.bar = c.bar
Run Code Online (Sandbox Code Playgroud)
假设查询运行需要 10 分钟。在运行时尝试更新表 a、b 或 c 中的值将等待上述查询首先完成。我想避免这个锁(不关心数据一致性)。我怎样才能做到这一点?
使用:MySQL 5.1.41 和 InnoDB 表
ps 设置事务隔离级别读取未提交;不会改变行为
更新 在执行查询时,显示 ENGINE INNODB STATUS 的输出如下(我特意在这里做了一个非常慢的查询)
=====================================
120323 15:26:29 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 8 seconds
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 1470, signal count 1468
Mutex spin waits 0, rounds 7525, …Run Code Online (Sandbox Code Playgroud) 三张表:
product:与列: ( a, g, ...a_lot_more... )
a: PK, clustered
g: bit-column
Run Code Online (Sandbox Code Playgroud)
main:与列: ( c, f, a, b, ...a_lot_more... )
c: PK, clustered
f: bit-column
(a, b): UQ
Run Code Online (Sandbox Code Playgroud)
lookup 带列: ( a, b, c, i )
(a, b): PK, clustered
a: FK to product(a)
c: UQ, FK to main(c)
i: bit-column
Run Code Online (Sandbox Code Playgroud)
我找不到合适的连接索引:
FROM
product
JOIN
lookup
ON lookup.a = product.a
JOIN
main
ON main.c = lookup.c
WHERE
product.g = 1
AND
main.f = 1
AND
lookup.i = 1 …Run Code Online (Sandbox Code Playgroud) 在 mysql 控制台中,我们将使用 delimiter 命令来更改分隔符,这对定义过程很有用。我 delimiter只了解 mysql 客户端的命令(客户端命令)。
但我使用不具有该命令的MySQL客户端delimiter
一样dbslayer,对这种客户我该怎么定义程序。
现在考虑:
create procedure test_pro()
begin
select 'hello pro';
end
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
mysql -u root -pmypass test < proc_file
Run Code Online (Sandbox Code Playgroud)
其中 proc_file 包含上述过程;
但这给了我以下错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
Run Code Online (Sandbox Code Playgroud)
事件我尝试了以下
create procedure test_pro()
begin
select 'hello pro';
end;
Run Code Online (Sandbox Code Playgroud)
(添加了尾随分号)但我得到了同样的错误。 …
在 Windows 上安装了 PostgreSQL 9.1 x64,设置了一个监听地址,但是在与 pgAdmin 连接时出现以下错误。不知道为什么 PostgreSQL 看到的是我的 IPv6 地址而不是我的常规 IP 地址:

为了让身份验证工作,根据错误消息,我更新pg_hba.conf了这个:
host all all fe80::c5d2:XXXX:XXXX:3bc0/12 trust
那行得通,但它很丑陋,而且太具体了。我根据 PostgreSQL 文档尝试了以下操作,但没有成功,我收到相同的“访问被拒绝”错误:
local all all trust
host all all 0.0.0.0/12 trust
Run Code Online (Sandbox Code Playgroud)
我让这个工作了,它涵盖了整个 IPv6 地址空间,但是如何指定 IPv6 范围以获得更多限制?
host mydb myuser ::/0 trust
Run Code Online (Sandbox Code Playgroud)
::/0?我在未运行的 SQL 代理作业步骤中设置了以下代码。收到的消息很简单:
无法开始执行第 1 步(原因:第(46)行:语法错误)。步骤失败。
工作的持续时间是: 00:00:00
此脚本的第 46 行是here-string:
,@DriveLetter = '$($c.DriveLetter)'
Run Code Online (Sandbox Code Playgroud)
此脚本在 SQL Server 代理之外完美运行。
服务器名称表:
CREATE TABLE ServerTable (
ServerName varchar(50)
)
Run Code Online (Sandbox Code Playgroud)
磁盘空间表类似于:
CREATE TABLE DiskSpace (
ID int IDENTITY(1,1),
ServerName varchar(50),
DriveLetter varchar(2),
DiskSpaceCapacityGB decimal(12,5),
DiskSpaceFreeGB decimal(12,5)
)
Run Code Online (Sandbox Code Playgroud)
PowerShell 脚本:
This command is to allow SQL Agent job to show failure in event PowerShell script errors
Default behavior in SQL Agent for PowerShell steps it 'Continue'
$erroractionpreference = "Stop"
$sqlInstance = 'server1'
$sqlDatabase …
Run Code Online (Sandbox Code Playgroud) 我对我之前关于 Inno-Tables 的导入速度的问题进行了跟进(惊喜!)。
场景
我尝试在合理的时间内在我的本地开发机器上导入一些大* 数据库转储。我们有很多KEY附加到表的s 已经证明是一个瓶颈,但对我们的实时系统仍然很重要。
在提出上述问题后,我的方法是KEY ...从转储、导入和重新添加密钥中删除语句。
但是,我经常发现自己编辑当前转储以将其导入到本地,并且偶然发现了这些有趣的“评论”(disable/enable keys-lines)
--
-- Dumping data for table `monster`
--
LOCK TABLES `monster` WRITE;
/*!40000 ALTER TABLE `monster` DISABLE KEYS */;
INSERT … INSERT … INSERT
/*!40000 ALTER TABLE `monster` ENABLE KEYS */;
UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)
但实际上这些“注释”是有条件的 MySql-Statements
这对我来说是新闻,但好吧,考虑到输出形式mysql --version,我觉得一切都很好:
mysql Ver 14.14 Distrib 5.5.38, for debian-linux-gnu (x86_64) using readline 6.3
我的假设
表已锁定(很好,只有我在开发机器上)。然后禁用表模式中定义的键,导入数据,启用键。
因此,在“数据插入”阶段,不应将时间浪费在键上,而是在插入所有数据后进行检查。
我会认为这与我KEY 'foo' (foo)'从转储中删除所有 - …
在 SQL Server 中使用 CLR 是否存在任何特定的安全或性能风险?
mysql ×7
backup ×3
mysqldump ×2
ctas ×1
index ×1
innodb ×1
locking ×1
mysql-5.0 ×1
mysql-5.5 ×1
optimization ×1
percona ×1
performance ×1
postgresql ×1
powershell ×1
security ×1
sql-clr ×1
sql-server ×1