GreatSQL5.7 与 8.0 对 DATE 非法值处理方式不同

JDBC MySQL任意文件读取分析 文章首发于知识星球-赛博回忆录。给主管打个广告,嘿嘿。在渗透测试中,有些发起mysql测试流程(或者说mysql探针)的地方,可能会存在漏洞。在连接测试的时候通过添加allowLoadLocalInfileInPath,allowLoadLocalInfile,allowUrlInLocalInfile与伪造的服务器进行通信,造成任意文件读取。完整payload:test?以下是可以利用该漏洞的一些场景。 阅读详情

GreatSQL5.7 与 8.0 对 DATE 非法值处理方式不同

一、问题描述

1. 问题现象

当分别通过LOAD DATA LOCAL INFILE和INSERT导入非法的 DATE 字段数据时,在5.7.21和 8.0.25使用LOAD DATA LOCAL会报一个Warning,数据异常但可以插入成功,而且实际插入的数据跟用户计划插入的不同,具体是0000-00-00;而使用LOAD DATA INFILE方式导入和INSERT非法值则直接报错,表里不会插入数据。

二、问题分析

1、LOAD DATA INFILE的使用模式

有普通模式和 LOCAL 模式。普通模式要求数据文件放在数据库服务器上,基于行内数据库容器化的情况,目前统一使用 LOCAL 模式。

2、LOAD DATA LOCAL INFILE方式导入的处理机制

LOAD DATA LOCAL INFILE的特殊处理机制,相当于自动置上IGNORE,官方文档有明确说明。

LOCAL also affects error handling.
With LOAD DATA INFILE,Data interpretation  and duplicate-key errors terminate the operation.
With LOAD DATA LOCAL INFILE,Data interpretation errors and duplicate-key errors become warnings and the operation continues because the server has no way to stop transmission in the middle of the operation. For duplicate-key errors, this is same as if IGNORE is specified. IGNORE is explained further later in this section.

而在源码LOCAL INFILE里加上IGNORE标识的代码:

          opt_duplicate INTO TABLE_SYM table_ident opt_use_partition
          {
            LEX *lex=Lex;
            /* Fix lock for LOAD DATA CONCURRENT REPLACE */
            if (lex->duplicates == DUP_REPLACE && $4 == TL_WRITE_CONCURRENT_INSERT)
              $4= TL_WRITE_DEFAULT;
            if (!Select->add_table_to_list(YYTHD, $12, NULL, TL_OPTION_UPDATING,
                                           $4, $4 == TL_WRITE_LOW_PRIORITY ?
                                               MDL_SHARED_WRITE_LOW_PRIO :
                                               MDL_SHARED_WRITE, NULL, $13))
              MYSQL_YYABORT;
            lex->load_field_list.empty();
            lex->load_update_list.empty();
            lex->load_value_list.empty();
            /* We can't give an error in the middle when using LOCAL files */
            if (lex->local_file && lex->duplicates == DUP_ERROR)
              lex->set_ignore(true);
          }
  /* We can't give an error in the middle when using LOCAL files */
  if (m_cmd.m_is_local_file && lex->duplicates == DUP_ERROR)
    lex->set_ignore(true);

因此,上述代码里针对LOAD DATA LOACL INFILE加 IGNORE 属于数据库的正常行为,

但官方文档未给出对 LOCAL 加上IGNORE未有进一步的说明,只是描述了IGNORE对语句执行的影响。

当 IGNORE关键字和严格 SQL 模式同时生效时,IGNORE关键字优先。

The following table presents a summary comparison of statement behavior when the default is to produce an error versus a warning. An example of when the default is to produce an error is inserting a NULL into a NOT NULL column. An example of when the default is to produce a warning is inserting a value of the wrong data type into a column (such as inserting the string 'abc' into an integer column).
Operational ModeWhen Statement Default is ErrorWhen Statement Default is Warning
Without IGNORE or strict SQL modeErrorWarning
With IGNOREWarningWarning (same as without IGNORE or strict SQL mode)
With strict SQL modeError (same as without IGNORE or strict SQL mode)Error
With IGNORE and strict SQL modeWarningWarning
One conclusion to draw from the table is that when the IGNORE keyword and strict SQL mode are both in effect, IGNORE takes precedence. This means that, although IGNORE and strict SQL mode can be considered to have opposite effects on error handling, they do not cancel when used together.

在严格模式下是不允许使用零部分的日期,并且插入会产生错误,除非使用IGNORE,会将将零部分的日期插入为 '0000-00-00'(这在数据库中被视为有效IGNORE)并产生警告。

lf strict mode is enabled, dates with zero parts are not permitted and inserts produce an error, unless IGNORE is given as WelL. For INSERT IGNORE and UPDATE IGNORE, dates with zero parts are inserted as '0000-00-00' (which is consideredvalid with IGNORE) and produce a warning.

3、问题重现

3.1 基线设置

5.7.21和8.0.25的SQL_MODE:

greatsql>SHOW GLOBAL VARIABLES LIKE 'SQL_MODE';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
3.2 测试情况
LOAD DATA INFILE测试情况

在存在非法数值的情况下,导入命令报错"ERROR 1292 (22007): Incorrect date value: '0000-00-00' for column 'c_date' at row 1"。

greatsql> TRUNCATE TABLE testdb.t2;
Query OK, 0 rows affected (0.04 sec)

greatsql> LOAD DATA INFILE '/data/greate/t1_00.csv' INTO TABLE testdb.t2 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n";
ERROR 1292 (22007): Incorrect date value: '0000-00-00' for column 'c_date' at row 1
greatsql>
LOAD DATA LOCAL INFILE测试情况

在存在非法数值的情况下,导入命令不报错,但是会输出"warning:Data truncated for column 'a' at row 1",表明GreatSQL识别到了非法字符串,并将其自动进行TRUNCATE转换成了数据类型的默认值。

$ echo 0002024-06 > test.txt

greatsql> CREATE TABLE t1 ( a date primary key);
Query OK, 0 rows affected (0.15 sec)

greatsql> LOAD DATA LOCAL INFILE '/root/test.txt' INTO TABLE t1;
Query OK, 1 row affected, 1 warning (0.00 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 1

greatsql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)

greatsql> SELECT * FROM t1;
+------------+
| a          |
+------------+
| 0000-00-00 |
+------------+
1 row in set (0.00 sec)
INSERT 测试情况

在存在非法数值的情况下,执行INSERT命令报错"ERROR 1292 (22007): Incorrect date value: '0000-00-00' for column 'c_date' at row 1"。

greatsql> SHOW CREAET TABLE  t2\G
*************************** 1. row ***************************
       Table: t2
Create Table: CREATE TABLE `t2` (
  `c1` int NOT NULL,
  `c2` int DEFAULT NULL,
  `c_date` date DEFAULT '2000-01-01',
  `c_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `c_dt` datetime DEFAULT '2000-01-01 00:00:00'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

greatsql> INSERT INTO  testdb.t2 VALUES (1,1,"0000-00-00",now(),"2000-01-01 00:00:00");
ERROR 1292 (22007): Incorrect date value: '0000-00-00' for column 'c_date' at row 1
greatsql> 
INSERT + IGNORE 测试情况

在存在非法数值的情况下,导入命令不报错,但是会输出"Warning:Out of range value for column 'c_date' at row 1",表明GreatSQL识别到了非法字符串,并也自动进行TRUNCATE转换成数据类型的默认值。

greatsql> INSERT IGNORE INTO testdb.t2 VALUES (1,1,"0000-00-00",now(),"2000-01-01 00:00:00");
Query OK, 1 row affected, 1 warning (0.01 sec)

greatsql> SHOW WARNINGS;
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1264 | Out of range value for column 'c_date' at row 1 |
+---------+------+-------------------------------------------------+
1 row in set (0.00 sec)

greatsql> INSERT IGNORE INTO  testdb.t2 VALUES (1,1,"002000-00-00",now(),"2000-01-01 00:00:00");
Query OK, 1 row affected, 1 warning (0.01 sec)

greatsql> SELECT * FROM testdb.t2;
+----+------+------------+---------------------+---------------------+
| c1 | c2   | c_date     | c_ts                | c_dt                |
+----+------+------------+---------------------+---------------------+
|  1 |    1 | 0000-00-00 | 2024-06-05 13:57:29 | 2000-01-01 00:00:00 |
|  1 |    1 | 0000-00-00 | 2024-06-05 13:59:55 | 2000-01-01 00:00:00 |
+----+------+------------+---------------------+---------------------+
2 rows in set (0.00 sec)
其它日期类型存在类似的ERROR和WARNING

除了"date"类型,其他时间类型存在同样的问题,例如"datetime、timestamp"等。

greatsql> CREATE TABLE t3 ( a datetime );
greatsql> LOAD DATA LOCAL INFILE '/home/greatdb/test.txt' INTO TABLE t3;
Query OK, 1 row affected, 1 warning (0.01 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 1
greatsql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
greatsql> SELECT * FROM t3;
+---------------------+
| a                   |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+
1 row in set (0.00 sec)
greatsql> CREATE TABLE  t4 ( a timestamp);
greatsql> LOAD DATA LOCAL INFILE '/home/greate/test.txt' INTO TABLE t4;
Query OK, 1 row affected, 1 warning (0.01 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 1

greatsql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)

greatsql> SELECT * FROM t4;
+---------------------+
| a                   |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+
1 row in set (0.00 sec)
默认值测试

当数据存在问题时,无论是LOAD DATA还是INSERT,GreatSQL内部都会自动进行TRUNCATE转换成数据类型的默认值。只有当字段缺省时,才会使用表中字段的default缺省值。

greatsql> LOAD DATA LOCAL INFILE '/tmp/t1.csv' INTO TABLE TESTDB.T2 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n";
Query OK, 1 rows affected, 1 warning (0.01 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 1

greatsql> INSERT IGNORE INTO testdb.t2 VALUES (1,1,"002000-00-00",now(),"2000-01-01 00:00:00");
Query OK, 1 row affected, 1 warning (0.01 sec)

greatsql> SHOW WARNINGS;
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1264 | Out of range value for column 'c_date' at row 1 |
+---------+------+-------------------------------------------------+
1 row in set (0.00 sec)

greatsql> INSERT IGNORE INTO testdb.t2 VALUES (3,3,NULL,now(),"2000-01-01 00:00:00");
Query OK, 1 row affected (0.01 sec)

greatsql> INSERT IGNORE INTO testdb.t2 VALUES (4,4,"",now(),"2000-01-01 00:00:00");
Query OK, 1 row affected, 1 warning (0.01 sec)

greatsql> SHOW WARNINGS;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column 'c_date' at row 1 |
+---------+------+---------------------------------------------+
1 row in set (0.00 sec)

greatsql> INSERT INTO testdb.t2(c1,c2) VALUES (5,5);
Query OK, 1 row affected (0.01 sec)

greatsql> SELECT * FROM  testdb.t2;
+----+------+------------+---------------------+---------------------+
| c1 | c2   | c_date     | c_ts                | c_dt                |
+----+------+------------+---------------------+---------------------+
|  1 |    1 | 0000-00-00 | 2024-06-05 13:57:29 | 2000-01-01 00:00:00 |
|  1 |    1 | 0000-00-00 | 2024-06-05 13:59:55 | 2000-01-01 00:00:00 |
|  3 |    3 | NULL       | 2024-06-05 14:03:40 | 2000-01-01 00:00:00 |
|  4 |    4 | 0000-00-00 | 2024-06-05 14:04:07 | 2000-01-01 00:00:00 |
|  5 |    5 | 2000-01-01 | 2024-06-05 14:11:48 | 2000-01-01 00:00:00 |
+----+------+------------+---------------------+---------------------+
5 rows in set (0.00 sec)
主键冲突场景测试

主键冲突场景下的ERROR,也会被LOAD DATA LOCAL INFILE当作WARNING处理,该行不进行插入。

greatsql> LOAD DATA LOCAL INFILE '/tmp/t1.csv' INTO TABLE testdb.t2 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n";
Query OK, 1 row affected, 2 warnings (0.01 sec)
Records: 2  Deleted: 0  Skipped: 1  Warnings: 2

greatsql> SHOW WARNINGS;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column 'c_date' at row 2 |
| Warning | 1062 | Duplicate entry '1' for key 't2.PRIMARY'    |
+---------+------+---------------------------------------------+
2 rows in set (0.00 sec)

greatsql> SELECT * FROM t2;
+----+------+--------+---------------------+------+
| c1 | c2   | c_date | c_ts                | c_dt |
+----+------+--------+---------------------+------+
|  1 |    1 | NULL   | 2024-06-05 09:26:58 | NULL |
+----+------+--------+---------------------+------+
1 row in set (0.00 sec)

greatsql> SYSTEM CAT /tmp/t1.csv
1,1,\N,"2024-06-05 09:26:58",\N
1,2,null,"2024-06-05 09:26:58",\N

greatsql> SHOW CREATE TABLE t2\G
*************************** 1. row ***************************
       Table: t2
Create Table: CREATE TABLE `t2` (
  `c1` int NOT NULL,
  `c2` int DEFAULT NULL,
  `c_date` date DEFAULT '2000-01-01',
  `c_ts` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `c_dt` datetime DEFAULT '2000-01-01 00:00:00',
  PRIMARY KEY (`c1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

三、问题总结

1、 问题原因

特性如此,属于正常情况。

2、 解决方案建议

1、数据预处理

在导入数据前,使用脚本或程序对数据进行预处理,确保所有日期值都是合法的。例如,可以使用正则表达式或日期解析库来验证和格式化日期。

2、导入验证

将含有日期非法值的数据文件通过导入程序的LOAD DATA LOCAL INFILE方式导入时,会产生 Warning | 1265 | Data truncated for column 'a' at row 1。建议导入程序可以在导入后通过SHOW WARINGS语句检查下导入过程,如果出现类似warning,则说明存在非法数据转换。

注意LOAD DATA LOCAL INFILE无法指定数据异常时的处理机制,也无法通过设置字段默认值来指定,由数据库内部统一按照数据类型的默认值处理。

3、建议应用使用数据库以外的工具进行数据导入。

4、修改sql_mode,添加ALLOW_INVALID_DATES,允许不合法的 date 数据导入。

红旗Asianux Server Linux V8 安装万里数据库(GreatSQL) ​ 红旗Asianux Server Linux 8.0是为云时代重新设计的操作系统,为云时代的到来引入了大量新功能,包括用于配置管理、快速迁移框架、编程语言和诸多开发者工具,它还为容器工具包提供全面支持,用于创建,运行和共享容器化应用程序,旨在支持从企业数据中心到多云计算平台的工作负载和应用。 阅读详情

相关推荐

Visual Studio Git 使用指南

Visual Studio 2022深度集成了Git功能,提供了直观的图形界面管理源代码。本文详细介绍了VS中Git的使用方法:从环境准备、克隆/创建仓库开始,重点讲解了"Git更改"窗口的日常操作,包括查看修改、暂存文件、提交推送等。同时涵盖了分支管理、查看历史、解决冲突等核心功能,以及储藏、重置等高级操作。文章还提供了实用技巧,如提交规范、频繁提交等最佳实践。VS的Git集成覆盖了日常开发需求,图形界面与命令行可互补使用,适合各层次开发者高效管理代码版本。

guigenyi的专栏 1569

Jdbc Mysql常用连接url,解决常见问题(解决远程Load data infile问题)

最直接用dos命令 mysql -u用户名 -p密码 数据库 -P端口 -h主机 --local-infile=1 -e "LOAD DATA LOCAL INFILE 'c:/test.txt' INTO TABLE 表名 FIELDS TERMINATED BY '\t' ENCLOSED BY '\t';" jdbc:mysql://ip:port/数据库名称?useUnico...

qq_18453581的博客 2234

【软考高级架构设计师】——2025年上半年软考真题(回忆版)

a)异构计算和算法优化b)资源抽象和容器控制c)安全和隔离(大致是这个意思)

小志的博客 4830

Mysql allowLoadLocalInfil 参数漏洞分析

收到这个漏洞首先,第一时间去官网,官网说这个参数3.03版本就修复了。默认false值。想当然的认为没问题,分析版本一大波操作下来,最后看源码默认值true,坑爹的官网有错误,坑死老夫了,果断跟官网反映 allowLoadLocalInfile Should the driver allow use of “LOAD DATA LOCAL INFILE …”? Setting to “true” overrides whatever path is set in ‘allowLoadLocalInfile

编码行者的博客 2505

nRF52811墨水屏时钟DIY:从全刷到局刷的实战改造指南(附完整代码)

本文详细介绍了如何将基于nRF52811的墨水屏时钟从耗电的全屏刷新模式改造为高效的局部刷新模式。通过剖析全刷与局刷的原理差异,提供了从工程架构、驱动层适配到应用层逻辑重构的完整实战指南,并附上关键代码示例。改造后,设备功耗显著降低,续航大幅提升,同时解决了视觉闪烁问题,是DIY低功耗墨水屏应用的实用参考。

weixin_29194693的博客 355

IMU自动校准论文与代码实现A Robust and Easy to Implement Method for IMU Calibration without External Equipments

PART1 摘要 低成本的惯性测量单元会受到系统误差的影响,系统误差由标度因子和轴偏差造成,这会降低位置和姿态估计的精度。 本文提出了一种无需任何外部设备的,鲁棒性强,易于实现的IMU校准方法。 该程序基于多放置方案,再估计传感器偏差的同时,为加速度和陀螺仪三轴的尺度和偏差系数。我们的方法只需要用手移动传感器,并将其放置在一组不同的静态位置(姿态)。 论文描述了一个鲁棒的快速校准协议,...

qq_29313679的博客 5308

图文结合带你搞懂GreatSQL体系架构

往期系列回顾很多小伙伴使用了GreatSQL,但是对GreatSQL的底层原理还不是很了解,今天就带大家一起揭开GreatSQL体系架构的神秘面纱!首先来回顾一张经典的体系架构图:图1_GreatSQL5.7 版本体系架构图由此可以发现,GreatSQL5.7 由以下几部分组成GreatSQL数据库区别于其他数据库的一个特点就是其可插拔的表存储引擎,特别需要注意的是,存储引擎是基于表的,而不是数据库。然而,经典同时也意味着这幅图已经相当陈旧了。在GreatSQL8.0 及更高版本中,查询缓存这一功能已经被移

GreatSQL2021的博客 569

CodeBuddy Code CLI 常用工作流:17个实战场景全解析

CodeBuddy Code CLI 17个实战场景解析 本文详细介绍了CodeBuddy Code CLI在17个开发场景中的高效应用,包括: 快速理解新代码库 高效修复Bug 安全重构代码 使用子代理系统处理专业任务 Plan Mode安全分析 自动化测试处理 创建合并请求 文档生成与维护 图片内容分析 文件目录快速引用 每个场景都配有具体命令示例和最佳实践,帮助开发者提升工作效率。

简简单单Onlinezuozuo 1079

MySQL导入数据报错:mysql 使用 load data local infile导入数据Loading local data is disabled(Error 3948)和Error 2068

在学习黑马的MySQL进阶课程时,由于为了测试SQL的性能指标,需要导入一个数据量特别大的表,表中有1000w条件记录(大约2.2GB的数据),此时老师已经将这1000w条记录拆分成5张表了,我需要使用。该参数的作用是控制导入权限,也就是说MySQL默认是禁止直接从外部导入数据的,相对应的参数还有。:要确保路径正确,同时需要导入五次,我有五张表:tb_sku1、tb_sku2、tb_sku3、tb_sku4、tb_sku5。指令将这五张表导入数据库,结果执行指令的过程中Navicate报了了。

热爱编程、热爱生活、热爱探索 2567

1 硬件工程师笔面试高频知识考点真题及解析——电阻

本文系统介绍了电阻的基础知识、选型要点及各类特殊电阻的应用。主要内容包括:1. 电阻选型需考虑阻值、封装、功率、精度、耐压等参数;2. 高频信号优先选用小封装电阻以减小寄生参数;3. 采样电阻需高精度、低温漂以保证测量准确性;4. 详细解析了上拉/下拉电阻、0欧电阻、磁珠等元件的特性与区别;5. 介绍了压敏电阻、热敏电阻等特殊电阻的工作原理及应用场景;6. 阐述了阻抗匹配的重要性及常见匹配方法。文章为电子工程师提供了全面的电阻选型与应用指南。

XU157303764的博客 2858

Qt代码-无人机地面站系统

无人机地面站系统是无人机与操作员交互的核心枢纽,需实现**无人机状态监控**(位置、姿态、电池等)、**实时通信**(基于MAVLink协议)、**任务规划**(航点编辑、航线生成)、**地图显示**(无人机位置与航迹)、**参数配置**(传感器校准、飞行模式设置)等核心功能。地面站作为`MAV_COMP_ID_GCS`(地面控制站组件ID=255),无人机通常为`MAV_COMP_ID_AUTOPILOT1`(组件ID=1)。// 航点/盘旋指令。// 北京坐标(示例)

寒寒豆豆软件公司的博客 321

【Kettle(PDI)】使用 mysql-connector-java-8.0.xx.jar 时,提示 Couldn‘t execute SQL: LOAD DATA LOCAL INFILE

使用 mysql-connector-java-8.0.xx.jar 时,Kettle Transformation (.ktr)文件中采用 MySQLBulkLoader 从管道 fifo 文件读数据写到 MySQL 数据库中。),所以,在生成 mysql-connector-java-8.0.xx.jar 时,默认把。工具:PDI (Pentaho Data Integration,旧名字是 Kettle)从管道文件(本地数据)读数据往远端 MySQL 服务器写数据时,会执行。sql 语句禁用了,

Abracadabra的专栏 694

《C/C++等级考试(1~8级)历届真题解析》专栏总目录

中国电子学会《全国青少年软件编程等级考试》C/C++编程(1~8级)历届真题解析。订阅后可阅读专栏内所有真题解析,真题持续更新中!

人生就是一个不断学习的过程 2万+

MySQL load data local infile踩坑

问题描述 在我写从hdfs转储数据到mysql的过程中,使用jdbc调用LOAD DATA local infile命令批量插入时一直会出现 The used command is not allowed with this MySQL version 我使用的是mysql8,因为这方面经验不足,走了不少弯路,小记一下,留存。 在mysql8中,local infile是默认关闭的,我查了...

yz_yz1234的博客 6308

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

mysql插入大量数据的几种方法executeBatch,load data local infile

mysql插入数据集合可以循环插入,可以使用jdbc的批处理executeBatch语句,可以使用load data local infile语句插入。一、循环遍历插入二、批处理executeBatch语句三、load data local infile语句1.生成文件插入2.采用setLocalInfileInputStream方法,这个方法可以不用生成文件,减少生成文件,往文件写入数据的IO操作......

m0_68615056的博客 4856

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

关于MYSQL LOAD DATA LOCAL INFILE 支持问题

关于MYSQL LOAD DATA LOCAL INFILE 支持问题 执行报错:ERROR 1148 (42000): The used command is not allowed with this MySQL version 解决方法: 先进入MYSQL检查一下版本号:5.1或者以上的都支持。 mysql> select version() 1.由于MYSQL编译安装时默认不

37度2 1万+

mysql load data问题

这是因为路径的限制,要导入/导出的文件路径不在指定的范围内。解决:退出后重新连接数据库,连接命令后面加上--local-infile。将要导入的文件放入检索出的路径下,重新执行load data命令。将load data语句写入一个sql文件内,执行文件。load data命令被拒绝,因为访问存取的限制。文件名为load data.sql,执行命令。可以绕过对路径的限制(我也不晓得原理)

qq_53746159的博客 6295

GreatSQL 8.0.32-26 发布,安全性进一步增强

GreatSQL 数据库是一款 开源免费 数据库,可在普通硬件上满足金融级应用场景,具有 高可用、高性能、高兼容、高安全 等特性,可作为 MySQL 或 Percona Server for MySQL 的理想可选替换。GreatSQL 8.0.32-26 版本的发布,不仅在功能上进行增强,也在持续关注和投入数据库性能和安全性。8月5日,GreatSQL 8.0.32-26 版本发布,对应的 Docker 镜像已推送,此次还提供了阿里云 ACR 镜像。ღ( ´・ᴗ・` )~其中在高安全方面,新增两个特性。

少安事务所 752

mysql,load data local infile报错,loading local data is disabled,解决方法

mysql load data local infile报错 loading local data is disabled 操作系统 win10 mysql版本 8.0.19 解决方法 一,打开local_infile 在mysql shell中输入 set global local_infile = 1; 打开local_infile,然后输入quit退出mysql shell 二,修改环境变量 1,在mysql安装位置中找到MySQL Server 8.0\bin路径并复制,如 C:\Program

m0_47944051的博客 7282

用c#把csv导入mysql :HResult=0x80131515,AllowLoadLocalInfile=true

最近我在做课设,用的c#,其中要求用c#把csv导入mysql 我参照了这个如下网页的方法,写了如下代码:https://jingyan.baidu.com/article/25648fc19faa829191fd0099.html string constr = "server=localhost;port=3306;user=root;password=root;dat...

weixin_44237526的博客 2411

在统信UOS上二进制安装GreatSQL

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 作者:vatebur 文章来源:GreatSQL社区投稿 UOS二进制安装数据库和其他 Linux 基本一样,网上命令行安装的教程很多。考虑到 UOS 自带图形化界面,为了降低一点安装门槛,本文尽量使用图形化界面安装。 纯命令行安装可以参考:https://greatsql.cn/docs/user-manual/3-quick-start/3-2-qui

GreatSQL2021的博客 1302

mysql8 load data报错

首先在执行load data命令时候出现了,Loading local data is disabled; this must be enabled on both the client and server sides 需要在server端设置setlocal_infile=1 并且在客户端连接时候设置mysql --local-infile=1 -uroot -p The MySQL server is running with the --secure-file-priv option so ..

xuanlong282的专栏 606

C# MySql批量导入 忽略自增主键

/* * 要分两步来处理: 1、mysql数据库开启允许本地导入数据的配置,命令如下: SET GLOBAL local_infile=1;//1表示开启,0表示关闭 查看该配置的状态命令如下: SHOW VARIABLES LIKE '%local%'; 2、第二步就是在项目里面的数据库连接字符串做设置 数据库连接字符串要加上”Allow.

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 1990

【MySQL】使用LOAD DATA INFILE命令加载数据文件到MySQL数据库的方法和常见错误及解决方法

使用LOAD DATA INFILE命令加载数据文件到MySQL数据库的方法和常见错误及解决方法

SQLplusDB的小院 9141
上一篇: 基于 MySQL 8.0 细粒度授权:单独授予 KILL 权限的优雅解决方案
下一篇: GreatSQL 8.0.32-27 GA (2025-3-10)
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值