故障解析丨导入字符串NULL导致主从报错

MySQL 8.0 高可用之如何解决从库数据被修改引起的主从同步错误 作者公众号,欢迎一起交流。 在MySQL主从复制过程中,由于各种原因,不可避免在复制过程中出现错误,那么在复制过程中出现错误该如何解决呢?本篇将演示基于普通复制模式和基于GTID复制模式由于从库数据被修改导致的主从不一致时,如何在从库跳过相应的错误。 1 常见错误 1)ERROR:1062 从库插入数据,发生唯一性冲突 2)ERROR:1032 从库找不到要删除的数据 3)ERROR:1452 无法在外键的表插入或者更新参考主键没有的数据 2 普通复制模式从库出现错误 2.1 模拟错误 . 阅读详情

1.背景概述

目前需要搭建一个从库,由于单表数据量较大,时间比较有限,考虑到导入导出的时间,并且GreatSQL支持并行load data的功能,能够加速数据的导入,因此决定使用 select into outfile 和 load data 的方式进行数据的迁移;

在数据导入完成后进行数据同步,从库发生报错 1032 找不到记录,但是登录从库中可以查询到此条记录,这里就很奇怪;

最后通过解析relaylog,根据relaylog中的update记录,以每个字段为查询条件进行查询,发现是由于NULL值列导致的,主库这列的值是 NULL,从库在导入后导成了字符串"NULL",因此导致回放update操作时匹配不到数据而报错1032.

2.问题复现

本次测试基于 GreatSQL 8.0.32-24

2.1 初始化2个单机实例

略

2.2 主节点创建测试表

greatsql> create database test;
greatsql> use test;

greatsql> create table t1 (id int,
name varchar(30),
age int,
addr varchar(30),
school varchar(30),
unique key (id)) engine=innodb;

greatsql> insert into t1 values
(1,'小红',10,'北京','一中'),
(2,'小绿',11,'北京','一中'),
(3,'小黄',12,'北京',NULL),
(4,'小蓝',13,'北京',NULL),
(5,'小黑',14,'北京',NULL);

2.3 查看数据

greatsql> select * from t1;
+----+--------+------+--------+--------+
| id | name  | age  | addr  | school |
+----+--------+------+--------+--------+
|  1 | 小红  |  10 | 北京  | 一中  |
|  2 | 小绿  |  11 | 北京  | 一中  |
|  3 | 小黄  |  12 | 北京  | NULL  |
|  4 | 小蓝  |  13 | 北京  | NULL  |
|  5 | 小黑  |  14 | 北京  | NULL  |
+----+--------+------+--------+--------+
5 rows in set (0.00 sec)

2.4 主节点导出数据

greatsql> select * from test.t1 into outfile '/greatsql/t1.csv' FIELDS TERMINATED BY '|+|'  ESCAPED BY '' LINES TERMINATED BY '/*rowsxxx*/';

2.5 查看导出的数据

$ cat t1.csv 

1|+|小红|+|10|+|北京|+|一中/*rowsxxx*/2|+|小绿|+|11|+|北京|+|一中/*rowsxxx*/3|+|小黄|+|12|+|北京|+|NULL/*rowsxxx*/4|+|小蓝|+|13|+|北京|+|NULL/*rowsxxx*/5|+|小黑|+|14|+|北京|+|NULL/*rowsxxx

可以看到导出的数据中包含 NULL

2.6 从库创建表并导入数据

greatsql> create database test;
use test;
create table t1 (id int,
name varchar(30),
age int,
addr varchar(30),
school varchar(30),
unique key (id)) engine=innodb;

导入数据

greatsql> load data  infile '/greatsql/t1.csv' into table test.t1 fields terminated by '|+|' ESCAPED BY '' lines terminated by '/*rowsxxx*/'; 

2.7 从库查询数据

greatsql> select * from test.t1;
+----+--------+------+--------+--------+
| id | name  | age  | addr  | school |
+----+--------+------+--------+--------+
|  1 | 小红  |  10 | 北京  | 一中  |
|  2 | 小绿  |  11 | 北京  | 一中  |
|  3 | 小黄  |  12 | 北京  | NULL  |
|  4 | 小蓝  |  13 | 北京  | NULL  |
|  5 | 小黑  |  14 | 北京  | NULL  |
+----+--------+------+--------+--------+
5 rows in set (0.00 sec)

2.8 从库建立复制

greatsql> reset master;
Query OK, 0 rows affected (0.04 sec)

greatsql> set global gtid_purged='b94e6517-68dd-11ee-b43b-00163ecb92e3:1-5755';
Query OK, 0 rows affected (0.00 sec)

greatsql> show master status;
+---------------+----------+--------------+------------------+---------------------------------------------+
| File      | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set              |
+---------------+----------+--------------+------------------+---------------------------------------------+
| binlog.000001 |    153 |        |          | b94e6517-68dd-11ee-b43b-00163ecb92e3:1-5755 |
+---------------+----------+--------------+------------------+---------------------------------------------+
1 row in set (0.00 sec)

greatsql> change master to master_user='root',master_password='greatdb',master_host='192.168.137.162',master_port=6001,master_auto_position=1;
Query OK, 0 rows affected, 7 warnings (0.02 sec)

greatsql> start slave;
Query OK, 0 rows affected, 1 warning (0.04 sec)

greatsql> show slave status\G
*************************** 1. row ***************************
        Slave_IO_State: Waiting for source to send event
         Master_Host: 192.168.137.162
         Master_User: root
         Master_Port: 6001
        Connect_Retry: 60
       Master_Log_File: binlog.000002
     Read_Master_Log_Pos: 1861574
        Relay_Log_File: relaylog.000002
        Relay_Log_Pos: 395
    Relay_Master_Log_File: binlog.000002
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
       Replicate_Do_DB: 
......

2.9 主库更新数据

greatsql> update test.t1 set name='小小黑' where id=5;

2.10 从库查看复制状态

greatsql> show slave status\G
*************************** 1. row ***************************
        Slave_IO_State: Waiting for source to send event
         Master_Host: 172.17.137.162
         Master_User: root
         Master_Port: 6001
        Connect_Retry: 60
       Master_Log_File: binlog.000002
     Read_Master_Log_Pos: 1863564
        Relay_Log_File: relaylog.000002
        Relay_Log_Pos: 395
    Relay_Master_Log_File: binlog.000002
       Slave_IO_Running: Yes
      Slave_SQL_Running: No
       Replicate_Do_DB: 
     Replicate_Ignore_DB: 
      Replicate_Do_Table: 
    Replicate_Ignore_Table: 
   Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: 
          Last_Errno: 1032
          Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'b94e6517-68dd-11ee-b43b-00163ecb92e3:5756' at master log binlog.000002, end_log_pos 1863537. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.
         Skip_Counter: 0
......

greatsql> select * from performance_schema.replication_applier_status_by_worker limit 1\G
*************************** 1. row ***************************
                      CHANNEL_NAME: 
                       WORKER_ID: 1
                       THREAD_ID: NULL
                     SERVICE_STATE: OFF
                   LAST_ERROR_NUMBER: 1032
                   LAST_ERROR_MESSAGE: Worker 1 failed executing transaction 'b94e6517-68dd-11ee-b43b-00163ecb92e3:5756' at master log binlog.000002, end_log_pos 1863537; Could not execute Update_rows event on table test.t1; Can't find record in 't1', Error_code: 1032; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log FIRST, end_log_pos 1863537
                  LAST_ERROR_TIMESTAMP: 2023-10-17 10:02:46.396166
                LAST_APPLIED_TRANSACTION: 
   LAST_APPLIED_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 0000-00-00 00:00:00.000000
  LAST_APPLIED_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 0000-00-00 00:00:00.000000
     LAST_APPLIED_TRANSACTION_START_APPLY_TIMESTAMP: 0000-00-00 00:00:00.000000
      LAST_APPLIED_TRANSACTION_END_APPLY_TIMESTAMP: 0000-00-00 00:00:00.000000
                  APPLYING_TRANSACTION: b94e6517-68dd-11ee-b43b-00163ecb92e3:5756
     APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP: 2023-10-17 10:02:46.392331
    APPLYING_TRANSACTION_IMMEDIATE_COMMIT_TIMESTAMP: 2023-10-17 10:02:46.392331
       APPLYING_TRANSACTION_START_APPLY_TIMESTAMP: 2023-10-17 10:02:46.393814
         LAST_APPLIED_TRANSACTION_RETRIES_COUNT: 0
  LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER: 0
 LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAGE: 
LAST_APPLIED_TRANSACTION_LAST_TRANSIENT_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000
           APPLYING_TRANSACTION_RETRIES_COUNT: 0
    APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_NUMBER: 0
   APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_MESSAGE: 
  APPLYING_TRANSACTION_LAST_TRANSIENT_ERROR_TIMESTAMP: 0000-00-00 00:00:00.000000
1 row in set (0.00 sec)

可以看到从库发生1032报错,找不到记录

2.11 解析从库relay log

#231017 10:02:46 server id 1  end_log_pos 1863456 Table_map: `test`.`t1` mapped to number 180
\# has_generated_invisible_primary_key=0
\# at 673
\#231017 10:02:46 server id 1  end_log_pos 1863537 Update_rows: table id 180 flags: STMT_END_F
\### UPDATE `test`.`t1`
\### WHERE
\###  @1=5 /* INT meta=0 nullable=1 is_null=0 */
\###  @2='小黑' /* VARSTRING(120) meta=120 nullable=1 is_null=0 */
\###  @3=14 /* INT meta=0 nullable=1 is_null=0 */
\###  @4='北京' /* VARSTRING(120) meta=120 nullable=1 is_null=0 */
\###  @5=NULL /* VARSTRING(120) meta=120 nullable=1 is_null=1 */
\### SET
\###  @1=5 /* INT meta=0 nullable=1 is_null=0 */
\###  @2='小小黑' /* VARSTRING(120) meta=120 nullable=1 is_null=0 */
\###  @3=14 /* INT meta=0 nullable=1 is_null=0 */
\###  @4='北京' /* VARSTRING(120) meta=120 nullable=1 is_null=0 */
\###  @5=NULL /* VARSTRING(120) meta=120 nullable=1 is_null=1 */
\# at 754
\#231017 10:02:46 server id 1  end_log_pos 1863564 Xid = 5940
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by greatsqlbinlog */ /*!*/;
DELIMITER ;
\# End of log file

img

可以看到update更新前的数据与从库的数据一致,那么为什么还会报错 找不到记录呢?

2.12 根据relay log中的内容去从库查询数据

greatsql> select * from test.t1 where id=5;
+------+--------+------+--------+--------+
| id  | name  | age  | addr  | school |
+------+--------+------+--------+--------+
|   5 | 小黑  |  14 | 北京  | NULL  |
+------+--------+------+--------+--------+
1 row in set (0.01 sec)

greatsql> select * from test.t1 where name='小黑';
+------+--------+------+--------+--------+
| id  | name  | age  | addr  | school |
+------+--------+------+--------+--------+
|   5 | 小黑  |  14 | 北京  | NULL  |
+------+--------+------+--------+--------+
1 row in set (0.01 sec)

greatsql> select * from test.t1 where age=14;
+------+--------+------+--------+--------+
| id  | name  | age  | addr  | school |
+------+--------+------+--------+--------+
|   5 | 小黑  |  14 | 北京  | NULL  |
+------+--------+------+--------+--------+
1 row in set (0.00 sec)

greatsql> select * from test.t1 where addr='北京';
+------+--------+------+--------+--------+
| id  | name  | age  | addr  | school |
+------+--------+------+--------+--------+
|   1 | 小红  |  10 | 北京  | 一中  |
|   2 | 小绿  |  11 | 北京  | 一中  |
|   3 | 小黄  |  12 | 北京  | NULL  |
|   4 | 小蓝  |  13 | 北京  | NULL  |
|   5 | 小黑  |  14 | 北京  | NULL  |
+------+--------+------+--------+--------+
5 rows in set (0.00 sec)

greatsql> select * from test.t1 where school is null;
Empty set (0.01 sec)

greatsql> select * from test.t1 where school='null';
+------+--------+------+--------+--------+
| id  | name  | age  | addr  | school |
+------+--------+------+--------+--------+
|   3 | 小黄  |  12 | 北京  | NULL  |
|   4 | 小蓝  |  13 | 北京  | NULL  |
|   5 | 小黑  |  14 | 北京  | NULL  |
+------+--------+------+--------+--------+
3 rows in set (0.00 sec)

可以看到,根据null值作为查询条件时,匹配不到数据; 根据字符串"null" 进行匹配是可以匹配到数据

2.13 去主库进行查询

greatsql> select * from test.t1 where school is null;
+------+-----------+------+--------+--------+
| id  | name    | age  | addr  | school |
+------+-----------+------+--------+--------+
|   3 | 小黄    |  12 | 北京  | NULL  |
|   4 | 小蓝    |  13 | 北京  | NULL  |
|   5 | 小小黑   |  14 | 北京  | NULL  |
+------+-----------+------+--------+--------+
3 rows in set (0.00 sec)

greatsql> select * from test.t1 where school='null';
Empty set (0.00 sec)

在主库查询的结果与从库相反

可以得出结论,由于从库导入的数据将NULL值列的数据导入成了字符串 NULL,因此导致主从数据出现了不一致。

2.14 修复从库

greatsql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)

greatsql> update test.t1 set school=NULL where school='null';
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0

greatsql> start slave;
Query OK, 0 rows affected, 1 warning (0.04 sec)

greatsql> show slave status\G
*************************** 1. row ***************************
        Slave_IO_State: Waiting for source to send event
         Master_Host: 172.17.137.162
         Master_User: root
         Master_Port: 6001
        Connect_Retry: 60
       Master_Log_File: binlog.000002
     Read_Master_Log_Pos: 1863564
        Relay_Log_File: relaylog.000003
        Relay_Log_Pos: 435
    Relay_Master_Log_File: binlog.000002
       Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
       Replicate_Do_DB: 
......

可以看到主从状态已经恢复正常

3.总结

1.如果FIELDS ESCAPED BY字符为空字符,则没有字符被转义,并且NULL被作为NULL输出,而不是\N;这也是导致此次主从报错的原因。

2.如果这张表使用的是主键而不是唯一索引,即使某些列被导入为字符串NULL,也不会报错。

3.如果这张表没有索引或有普通索引,则会报错。

Enjoy GreatSQL :)


关于GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接

GreatSQL社区

Gitee

Github

Bilibili

技术交流群

微信:添加GreatSQL社区助手好友,微信号wanlidbc发送验证信息加群

QQ群:533341697

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

MySQL 异步复制源自动故障转移 1 异步复制源架构 1.1基于主从复制的异步复制源 从MySQL 8.0.22开始支持异步连接故障转移机制,我们可以在一套主从复制架构的基础上,创建一个异步复制连接的Replica副本,当主从复制Source发生意外宕机,业务提升Replica为新的Source对外进行服务,异步连接Replica可自动检测主从架构源端连接异常,并重新指向新的Source进行数据复制。 架构图与流程展示: Source 、Replica为正常的主从复制架构,Async Replica为通过异步连接的复制副本 当主从复制架 阅读详情

相关推荐

mysql双主双从-读写分离

中途遇到的问题: Slave_IO_Running: No,原因是我在新建虚拟机的时候,直接克隆装好了mysql的机器,导致uuid重复,vim /var/lib/mysql/auto.cnf,把uuid修改成唯一的再重启mysqld服务,再次登录mysql,执行:STOP REPLICA IO_THREAD FOR CHANNEL '';INSERT INTO mytable (name, age, address) VALUES ('sxy', 21, '邵阳'), ('tx', 21, '永州');

qq_59337657的博客 311

Mysql主从复制

mysql主库复制配置,server-id配置,解决Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.问题,配置的uuid一样问题,主mysql库同步配置

wei的博客 1056

JavaScript match() 方法深度解析:null 安全、捕获组与全局匹配陷阱

String.prototype.match 是 JavaScript 中处理正则匹配的核心方法,其本质并非简单返回匹配结果,而是 RegExp 引擎执行状态的一次性快照。理解它返回 Array 或 null 的确定性契约,是避免 'Cannot read properties of null' 类高频错误的前提;掌握 g 标志对返回结构的颠覆性影响(丢失 index/input/捕获组),可规避日志解析、富文本提取等场景中的静默失效;结合命名捕获组(groups)与 matchAll(),能显著提升代码可

weixin_30797199的博客 406

MySQL8 主从同步 SHOW SLAVE STATUS Slave_IO_State 显示为 Waiting for source to send event

是 MySQL 复制的一种正常状态,通常表明从库在等待主库的事件。主库没有生成新的事件。从库的配置不正确。网络或连接问题。从库的复制线程遇到问题。通过检查主库的 binlog 配置、从库的复制状态、网络连接以及错误日志,通常可以解决该问题。

空 1115

MySQL与PostgreSQL命令行数据导入实战指南

数据导入是数据库工程的核心基础能力,涉及字符集编码、字段分隔、NULL处理、事务控制等关键原理。掌握命令行导入技术,不仅能规避GUI工具隐式转换导致的乱码、截断、空值误判等问题,更能实现可复现、可审计、可集成CI/CD的生产级数据加载。本文聚焦MySQL的LOAD DATA INFILE/mysqlimport与PostgreSQL的\copy/COPY机制,深入解析UTF8MB4编码适配、BOM头清除、TSV替代CSV防冲突、NULL显式映射等高频痛点,覆盖百万至千万级结构化数据的高效、安全、可控载入场景

weixin_30621959的博客 366

MySQL与PostgreSQL命令行导入实战:高效、安全、自动化

结构化数据导入是ETL和数据库运维的基础能力,其核心在于绕过图形化工具的SQL解析与网络往返开销,直连数据库存储引擎。MySQL的LOAD DATA INFILE和mysqlimport、PostgreSQL的psql \copy等命令行工具,通过服务端文件直读或客户端流式协议,实现百万级数据秒级加载。技术价值体现在可控的字符集处理、字段映射、空值定义及与Shell脚本的无缝集成,支撑定时批量、日志归档、SaaS数据同步等典型场景。本文聚焦生产环境高频问题——secure_file_priv权限限制、CSV

weixin_30561425的博客 430

Java方法重载中null导致歧义调用的原理与解决方案

在Java中,方法重载(Overload)是基础但易被误解的特性;其解析过程严格遵循三阶段编译规则,核心在于类型匹配的确定性。当传入null时,因null可赋值给任意引用类型,极易在第一阶段(Strict Invocation)触发多个候选方法,从而被JLS明确定义为'ambiguous method call'——这不是运行时异常,而是编译期强制拒绝。该机制凸显了Java对类型安全与语义明确性的底层坚持。典型场景包括包装类与String并存、泛型擦除冲突、接口继承多路径及Lambda目标类型模糊等。解决路

weixin_29574585的博客 240

Matlab数据导入实战:从格式兼容到内存优化

在科学计算与工程建模中,数据导入是连接原始数据与算法分析的关键起点。其本质并非简单读取文件,而是涉及格式识别、类型推断、编码适配与内存管理的系统性工程。Matlab通过readtable、datastore、memmapfile等机制,将CSV、Excel、JSON、二进制等异构数据转化为结构化table或tall数组,支撑时间序列分析、传感器信号处理、IoT数据清洗等典型任务。尤其在风电故障诊断、汽车CAN日志解析、遥感元数据加载等工业场景中,导入策略直接影响模型鲁棒性与部署效率。本文聚焦Matlab命令

379

如何避免因os.environ类型错误导致线上故障?,3个真实案例解析

掌握os.environ的类型转换函数,避免配置错误引发线上故障。通过3个真实案例解析环境变量处理陷阱,详解安全转换方法与最佳实践,提升服务稳定性,值得收藏。

CodeWhim的博客 663

Java字符串数组转字符串的5种方案与生产级实践

字符串数组拼接是Java基础编程中的高频操作,其本质涉及字符串不可变性、内存分配机制与字符编码规范。理解String.join()、StringBuilder循环、Stream.collect()等方案的底层原理,有助于规避NPE、OOM及编码解析异常等典型问题。在电商订单导出、日志聚合、SQL动态构造等真实场景中,需综合权衡null处理策略、分隔符语义、预分配容量与线程安全需求。本文结合JDK8+特性与Apache Commons Lang工具,系统解析性能差异与边界处理逻辑,为开发者提供可落地的选型框架

weixin_30414305的博客 444

Oracle 19c升级实战:EXPDP迁移中的典型故障与深度解析

本文详细解析了Oracle 19c升级过程中使用EXPDP迁移数据时遇到的典型故障,包括字符集转换导致的数据丢失、Job导入后的用户权限异常、物化视图刷新组的日期格式问题等,并提供了实用的解决方案和优化建议,帮助DBA顺利完成Oracle 19c升级任务。

weixin_30571465的博客 333

PostgreSQL与MySQL命令行导入实战:编码、安全与性能全解析

数据库批量导入是数据工程的基础能力,其核心在于理解SQL标准加载机制(如COPY和LOAD DATA)背后的字符编码处理、权限控制模型与I/O调度原理。掌握UTF-8/BOM/GBK等编码转换、local_infile安全边界、分区表兼容性等关键技术,不仅能规避90%的导入失败,更能支撑高可靠数据管道建设。本文聚焦生产级CSV导入场景,覆盖PostgreSQL COPY参数精调、MySQL LOAD DATA安全启用、跨平台路径与换行符适配,并深度融合iconv、sed、csvkit等工程化预处理工具链,为

weixin_33800463的博客 383

JDK升级后验证码生成失败?手把手教你解决Nashorn引擎缺失导致的ScriptEngine报错

本文针对JDK升级后因Nashorn引擎缺失导致的`javax.script.ScriptEngine`报错问题,提供了详细的诊断与解决方案。文章分析了`engine is null`异常的根源,并给出了引入独立Nashorn依赖、切换至GraalVM引擎或重构代码移除脚本依赖三种核心修复方案,帮助开发者快速恢复验证码等依赖脚本引擎的功能。

weixin_29291863的博客 1017

GreatSQL社区2023全年技术文章总结

GreatSQL社区自成立以来一直致力于为广大的数据库爱好者提供一个交流与学习的平台。在2023年,我们见证了社区的蓬勃发展,见证了众多技术文章的诞生与分享。此篇总结呈现GreatSQL社区2023年社区技术文章在优快云发布的全部。这些文章涵盖了GreatSQL、MGR、源码解析、故障解析、SQL优化、安装部署、等众多数据库技术文章。

GreatSQL2021的博客 1223

麒麟操作系统Kylin如何从 2203 升级到 2403

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;开始升级流程第一步:升级前准备1. 确认版本为 V10 SP1 22032. 备份全部重要数据3. 确保网络稳定4. 关闭应用第二步:选择升级方式方法一:图形界面升级方法二:命令行升级1. 更新现有系统至最新2. 启动“系统升级”工具3. 检测并开始下载2403。

让编程变的很简单!! 2663

Netty UDP

UDP是一种无连接的协议,它并不在通信双方之间建立连接,而是直接将数据包从发送端发送到接收端。UDP不保证数据包的可靠传输,也不保证数据包的顺序,因此其传输速度通常比TCP快,且系统开销较小。然而,这也意味着UDP在某些情况下可能会丢失数据包或数据包到达的顺序错乱。

王小工小工历程 2027

【AI agent 开发 扣子Coze工作流Python代码节点大坑:输入参数一直null、Args对象报错、取不到上游大模型output终极解决(全程实战排错)】

❌ 不要把JS代码节点语法搬到Python上,二者入参结构完全不同❌ Python代码节点Args是平台私有对象,不支持.属性取值、不支持get()字典方法✅ 统一解法:先dict(args)把私有对象转原生字典,再逐层取值✅ 扣子Python节点强制自带一层params外层包裹,这是官方隐藏机制,文档没有明确标注,也是大部分人踩坑根源排查万能公式:遇到参数null,先打印args所有key,看清真实层级再写代码扣子官方文档只简单说明了代码节点用法,但是。

qq_45973421的博客 381

从DBC到ARXML:详解DaVinci Configurator中通信栈的自动化配置逻辑

本文深入解析了Vector公司DaVinci Configurator工具如何将DBC文件自动转换为符合AUTOSAR标准的ARXML配置,详细介绍了从DBC到ARXML的映射逻辑、自动化配置的边界与陷阱,以及工程实践中的优化策略。帮助工程师高效配置汽车电子系统中的通信协议,提升项目开发效率。

weixin_30279671的博客 717

JS 函数参数默认值误区解析:传 null 为何不触发默认值?

不要将 null 等同于 undefined:两者语义不同,null 是“主动传入的空值”,undefined 是“未定义的值”,只有后者会触发默认值。避免使用 || 兜底默认值:|| 会将 0、false、空字符串等“假值”都视为无效值,可能导致预期之外的结果,优先使用??。解构赋值时,务必给外层对象设置默认空对象(= {}),否则未传参时会报错。综上,函数参数默认值的核心逻辑的是“仅 undefined 触发”,这是 JavaScript 官方规范定义的标准行为。

2501_92872533的博客 422

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析

本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。

weixin_29182481的博客 820

别再被SpringerLink虐了!手把手教你搞定LaTeX源文件提交(附正确文件顺序和类型选择)

本文详细解析了SpringerLink投稿系统中LaTeX源文件提交的常见问题与解决方案,包括文件打包、类型选择和顺序排列等关键步骤。通过实战经验,帮助科研人员避开隐形陷阱,一次性完成LaTeX提交,提升投稿效率。特别针对`.bst`和`.cls`文件的正确处理提供了专业指导。

weixin_42522964的博客 445

SQL WHERE子句实战指南:性能优化、NULL处理与业务语义对齐

WHERE子句是SQL中看似简单却承载多重职责的核心语法组件,它不仅是基础条件过滤机制,更在执行引擎中承担谓词下推、Join策略影响和分区裁剪等关键角色。其编写质量直接决定查询性能、结果准确性和数据可维护性。深入理解NULL安全比较(如IS DISTINCT FROM)、字符串匹配的索引友好写法(LIKE前缀优于通配符居中)、时间条件的时区与数据延迟适配、IN与EXISTS的百万级ID过滤性能分水岭,以及布尔字段三值逻辑陷阱,是构建高可靠数据管道的技术基石。本文聚焦真实数仓场景下的WHERE工程化实践,覆盖

weixin_30808693的博客 474

【FPGA XDMA AXI Bridge 模式】PCIe:BARs 和 AXI:BARs 含义解析

Xilinx的 DMA/Bridge Subsystem for PCI Express IP核中,支持普通的XDMA模式,但是这种模式只允许主机端发起PCIe 读写请求,FPGA内部无法主动发起读写请求,也即FPGA无法主动读写HOST的内存。而该IP核的另一种模式,AXI Bridge模式则支持HOST主动读写,以及FPGA主动读写。该模式下有个参数需要配置,分别是PCIe:BARs以及AXI:BARs。而上述的普通模式只有PCIe:BARs需要配置。下面详细说说这两个参数的含义。

weixin_45888152的博客 3730
上一篇: GreatSQL登陆Arch Linux:成功的数据库安装之旅
下一篇: 关于GreatSQL字符集的总结
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值