AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-26791

matt's questions

Martin Hope
matt
Asked: 2021-01-09 06:08:58 +0800 CST

mysqldump 使用和不使用 --no-create-info 转储不同的数据

  • 1

mysqldump使用/不调用时转储不同的数据表示形式--no-create-info。

测试用例

首先,创建test表并用有趣的数据填充它。

CREATE TABLE `test` (
  `value` longtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- insert 'crème'
insert into test values(UNHEX('6372C3A86D65'));

然后,使用 with 和 without 转储数据--no-create-info:

mysqldump test_db test > dump_test.sql
mysqldump --no-create-info test_db test > dump_test2.sql

这些文件对crème的编码方式不同:

  • dump_test.sql将其编码为0x6372C3A86D65( èis 0xC3A8)
  • dump_test2.sql将其编码为0x63725CE86D65( èis 0x5CE8)

从正常工作中恢复转储dump_test.sql,将恢复完整的行:

mysql test_db < dump_test.sql

恢复转储dump_test2.sql会产生不正确的结果,其中数据被截断为cr( 0x6372)。请注意,表的结构是相同的:

mysql test_db < dump_test2.sql

没有错误也没有警告。这两个文件的不同之处 - 除了编码之外crème- 仅通过:

-- Table structure for table `test`
--

DROP TABLE IF EXISTS `test`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `test` (
  `value` longtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;

--

问题

为什么会这样?它在任何地方都有记录吗?我可以/如何正确恢复使用--no-create-info数据创建的转储?

附加信息

# mysqldump used to dump the database
$ mysqldump -V
mysqldump  Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
# Server
version_component: Percona Server (GPL), Release '35', Revision '5688520'
version: 5.7.32-35
mysql mysqldump
  • 1 个回答
  • 649 Views
Martin Hope
matt
Asked: 2018-11-03 06:12:29 +0800 CST

如何验证 MySQL 8.0+ 中是否存在给定的带有“密码”的用户@主机?

  • 1

我为应用程序编写健全性检查脚本。其中一项测试应该验证 MySQL 中是否存在具有“密码”的给定 user@host。我正在使用简单的本机哈希密码。在 MySQL5.7- 中有一个PASSWORD()函数可以让我查询mysql.user并验证用户是否存在以及密码是否匹配。MySQL8.0+有办法实现吗?MySQL 5.7 中的文档页面PASSWORD()不提供任何替代方法,该功能在 MySQL 8.0 中被删除。

我可以简单地尝试再次添加用户,但我觉得我的脚本应该知道并注册一个缺少具有预期凭据的用户的事件。

请注意,我不一定需要生成密码哈希,我只是想验证给定的用户/密码是否存在。这需要自动化,因此“尝试使用主机上的用户名/密码登录”之类的解决方案不算在内,因为我可能无权访问主机

mysql authentication
  • 1 个回答
  • 852 Views
Martin Hope
matt
Asked: 2015-10-17 02:29:55 +0800 CST

InnoDB 是否将行数存储在二级索引 B-Tree 非叶节点中?

  • 1

InnoDB是否存储二级索引B-Tree非叶节点中子节点的行数?

如果是这样,MySQL 是否使用此信息来加速具有范围约束的 COUNT(*) 查询(假设存在适当的索引)。

mysql index
  • 1 个回答
  • 351 Views
Martin Hope
matt
Asked: 2015-03-28 23:38:36 +0800 CST

将 MySQL 查询日志导出为 JSON 格式

  • 0

是否有任何工具能够将 MySQL 查询日志导出为 JSON 格式(或任何其他结构化格式)?

mysql performance
  • 2 个回答
  • 1278 Views
Martin Hope
matt
Asked: 2014-02-10 03:06:09 +0800 CST

MySQL,主键检索时磁盘表上的临时表?

  • 1

MySQL 5.5.24,Windows 7 64 位。

我有在三列上定义主键的 InnoDB 表:

CREATE TABLE `common_descriptions` (
  `object_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `object_type` varchar(32) NOT NULL DEFAULT '',
  `description` mediumtext NOT NULL,
  `lang_code` char(2) NOT NULL DEFAULT '',
  `object` varchar(12) NOT NULL DEFAULT '',
  `object_holder` varchar(32) NOT NULL DEFAULT '',
  PRIMARY KEY (`object_id`,`lang_code`,`object`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我正在执行相当简单的查询(在我看来)应该使用索引返回行

select SQL_NO_CACHE object_id, lang_code, object
from common_descriptions
limit 1

但它创建了 10 个临时表,其中 3 个在磁盘临时表上(通过监控多次确认show status like '%tmp%';)。objectcolumn 似乎触发了临时表的创建。当我用 (mediumtext) 替换object(varchar(12)) 时,description不会创建临时表。explain extended以上查询:

mysql> explain extended select SQL_NO_CACHE object_id, lang_code, object from co
mmon_descriptions limit 1\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: common_descriptions
         type: index
possible_keys: NULL
          key: PRIMARY
      key_len: 47
          ref: NULL
         rows: 49765
     filtered: 100.00
        Extra: Using index
1 row in set, 1 warning (0.00 sec)

tmp_table_size和都max_heap_table_size设置为16M。

在阅读了关于临时表的文档(http://dev.mysql.com/doc/refman/5.1/en/internal-temporary-tables.html)后,我没有看到任何关于为什么要创建临时表的很好的解释案子。为什么会这样?

mysql innodb
  • 1 个回答
  • 907 Views
Martin Hope
matt
Asked: 2013-08-30 13:12:10 +0800 CST

在 Centos 6 上将 MySQL 5.1 升级到 5.5 而不删除依赖项

  • 2

我正在尝试使用 yum/rpm 组合将 MySQL 5.1 升级到 5.5(yum 删除 MySQL 5.1,rpm 安装 MySQL 5.5)。我发现的大多数说明都建议先做:

yum remove mysql mysql-server mysql-libs

但是,在我的情况下,这样做会删除许多我绝对不想删除的其他包:

================================================================================
 Package              Arch        Version                   Repository     Size
================================================================================
Removing:
 mysql                x86_64      5.1.69-1.el6_4            @updates      2.4 M
 mysql-libs           x86_64      5.1.69-1.el6_4            @updates      4.0 M
 mysql-server         x86_64      5.1.69-1.el6_4            @updates       25 M
Removing for dependencies:
 cronie               x86_64      1.4.4-7.el6               @cr           166 k
 cronie-anacron       x86_64      1.4.4-7.el6               @cr            43 k
 crontabs             noarch      1.10-33.el6               @cr           2.4 k
 mysql-devel          x86_64      5.1.69-1.el6_4            @updates      388 k
 percona-toolkit      noarch      2.2.4-1                   @percona      5.7 M
 perl-DBD-MySQL       x86_64      4.013-3.el6               @base         338 k
 php-mysql            x86_64      5.3.3-23.el6_4            @updates      216 k
 postfix              x86_64      2:2.6.6-2.2.el6_1         @base         9.7 M
 sysstat              x86_64      9.0.4-20.el6              @base         807 k

Transaction Summary
================================================================================

如何在不删除这些软件包的情况下升级 MySQL?我可以以某种方式删除没有依赖关系的 MySQL 5.1(好吧,也许除了 mysql-devel 之外)并摆脱它吗?(没有库不匹配)。我发现一篇博客建议在 yum shell 中升级 MySQL,但我不确定它是否会改变什么?:

mysql-5.5 mysql-5.1
  • 1 个回答
  • 6436 Views
Martin Hope
matt
Asked: 2013-08-07 11:22:09 +0800 CST

在 MySQL 中,如果列 X 具有唯一值,UNIQUE 索引和 B-Tree 索引之间有什么区别

  • 2

假设我有表data:

CREATE  TABLE `test`.`data` (
`row_id` INT NOT NULL ,
`data_id` INT NOT NULL ,
PRIMARY KEY (`row_id`) );

现在,我们假设 data_id 具有唯一值。data_id使用 B-Tree 索引和使用 UNIQUE 索引之间有什么区别(空间、性能、内存)吗?(除了使用InnoDB作为存储引擎并且可以使用UNIQUE索引作为聚簇键所以row_id是uneccesary的情况)

mysql index
  • 1 个回答
  • 1177 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve