GreatSQL修改配置文件参数无法生效

GreatSQL数据库8.0快速安装部署 本文介绍了GreatSQL数据库在Linux系统上的安装配置流程。主要内容包括:1)系统兼容性检查和环境准备;2)关闭SELinux和防火墙;3)安装依赖包;4)创建安装目录并上传安装包;5)解压和安装RPM包;6)配置数据目录权限;7)初始化数据库并获取临时密码;8)修改配置文件;9)启动服务并修改密码;10)创建远程访问用户。最后还说明了如何使用Navicat客户端连接数据库。整个流程详细说明了从安装到配置的完整步骤。 阅读详情

GreatSQL修改配置文件参数无法生效

一、问题描述

客户需要创建无主键表,因提供默认模板设置了参数sql_require_primary_key = ON(创建新表或更改现有表结构的语句强制要求表具有主键),当创建无主键表时会提示ERROR 3750 (HY000): Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. 无法创建,现需要将参数修改为sql_require_primary_key = OFF,但更改文件重启实例后失效。

greatsql> SHOW VARIABLES LIKE 'sql_require_primary_key';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| sql_require_primary_key | ON    |
+-------------------------+-------+
1 row in set (0.00 sec)

greatsql> CREATE TABLE `test_table` (
    ->   `id` int NOT NULL,
    ->   `k` int NOT NULL DEFAULT '0',
    ->   `c` char(120) NOT NULL DEFAULT '',
    ->   `pad` char(60) NOT NULL DEFAULT '',
    ->   KEY `k_1` (`k`)
    -> ) ENGINE=InnoDB AUTO_INCREMENT=10000001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
ERROR 3750 (HY000): Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause performance problems in row-based replication, so please consult your DBA before changing this setting.

二、问题排查

使用命令修改先解决问题

因该参数sql_require_primary_key支持动态修改,先使用 SET global sql_require_primary_key = OFF修改,进行表创建。

# Session修改 
greatsql> SET sql_require_primary_key = OFF ; 
# Global修改(需重新登录session)
greatsql> SET GLOBAL sql_require_primary_key = OFF ; 
# 建表语句
greatsql> CREATE TABLE `test_table` (
  `id` int NOT NULL,
  `k` int NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  KEY `k_1` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=10000001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

查询参数生效文件

修改配置文件重启实例复现操作后,进行问题排查。

greatsql> SELECT * FROM performance_schema.variables_info WHERE variable_name = 'sql_require_primary_key';
+-------------------------+-----------------+----------------------------------------+-----------+-----------+----------------------------+----------+----------+
| VARIABLE_NAME           | VARIABLE_SOURCE | VARIABLE_PATH                          | MIN_VALUE | MAX_VALUE | SET_TIME                   | SET_USER | SET_HOST |
+-------------------------+-----------------+----------------------------------------+-----------+-----------+----------------------------+----------+----------+
| sql_require_primary_key | PERSISTED       | /greatsql/dbdata/data/mysqld-auto.cnf | 0         | 0         | 2024-11-07 10:44:11.545289 | root     | NULL     |
+-------------------------+-----------------+----------------------------------------+-----------+-----------+----------------------------+----------+----------+
  • VARIABLE_NAME:参数名称;
  • VARIABLE_SOURCE:最近设置参数的来源,以下是几个常见值说明;
    • PERSISTED:由实例 mysqld-auto.cnf 文件设置的参数;
    • EXPLICIT:由实例启动指定配置文件设置的参数,即--defaults-file指定的配置文件;
    • DYNAMIC:在实例运行期间动态设置的参数;
    • COMPILED:实例默认值;
    • COMMAND_LINE:命令行设置的参数;
  • VARIABLE_PATH:如果参数由配置文件而来,则为配置文件路径,否则为空;
  • MIN_VALUE && MIN_VALUE:参数允许设置的最小值和最大值,非数值类型的保持为0;
  • SET_TIME:最近设置参数的时间;
  • SET_USER && SET_HOST:最近设置参数的用户和主机。

通过查询performance_schema.variables_info获取到该参数生效配置文件为 mysqld-auto.cnf,且由SET PERSIST指令配置的,GreatSQL支持使用PERSIST命令修改持久化参数【persisted_globals_load参数需要为ON】,配置后该参数会写入到mysqld-auto.cnf一个 JSON 文件内,当实例启动后该文件内参数配置会覆盖默认实例启动指定的配置文件。

$ python -m json.tool mysqld-auto.cnf
{
    "Version": 2,
    "mysql_dynamic_variables": {
        "sql_require_primary_key": {
            "Metadata": {
                "Host": "",
                "Timestamp": 1730947451545289,
                "User": "root"
            },
            "Value": "ON"
        }
    }
}

查询performance_schema.persisted_variables也可以看到该参数被PERSIST指令设定为了 ON。

greatsql> SELECT * FROM  performance_schema.persisted_variables WHERE variable_name = 'sql_require_primary_key';
+-------------------------+----------------+
| VARIABLE_NAME           | VARIABLE_VALUE |
+-------------------------+----------------+
| sql_require_primary_key | ON             |
+-------------------------+----------------+

取消 persis 参数

通过RESET PERSIST sql_require_primary_key;后,修改配置文件后重启正常生效。

greatsql> RESET PERSIST sql_require_primary_key;
Query OK, 0 rows affected (0.01 sec)

# persisted_variables 表中已经没有了 sql_require_primary_key 参数的记录了
greatsql> SELECT * FROM  performance_schema.persisted_variables WHERE variable_name = 'sql_require_primary_key';
Empty set (0.00 sec)

# 由 mysqld_safe 启动的 greatsql 实例可以通过 restart 进行重启
greatsql> RESTART; 
Query OK, 0 rows affected (0.00 sec)

# 重启后,sql_require_primary_key 生效方式变成了 EXPLICIT 读取实例启动配置文件
greatsql>  SELECT * FROM performance_schema.variables_info WHERE variable_name = 'sql_require_primary_key';
+-------------------------+-----------------+----------------------------------------+-----------+-----------+----------+----------+----------+
| VARIABLE_NAME           | VARIABLE_SOURCE | VARIABLE_PATH                          | MIN_VALUE | MAX_VALUE | SET_TIME | SET_USER | SET_HOST |
+-------------------------+-----------------+----------------------------------------+-----------+-----------+----------+----------+----------+
| sql_require_primary_key | EXPLICIT        | /greatsql/dbdata/conf/gip18713315.cnf | 0         | 0         | NULL     | NULL     | NULL     |
+-------------------------+-----------------+----------------------------------------+-----------+-----------+----------+----------+----------+
1 row in set (0.01 sec)

greatsql> SHOW VARIABLES LIKE 'sql_require_primary_key';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| sql_require_primary_key | OFF   |
+-------------------------+-------+

三、问题结论

该环境sql_require_primary_key参数执行过SET PERSIST sql_require_primary_key = ON;持久化,在后续修改配置文件内容为 OFF 时,并未执行RESET PERSIST sql_require_primary_key;取消该参数的持久化配置,因此当实例启动时mysqld-auto.cnf文件中的配置会覆盖指定配置文件中的相同配置。

GreatSQL数据库原理实验:从环境搭建到SQL查询的完整实操指南 数据库系统原理课程中,DBMS认知实验常因环境配置和SQL实操脱节而效率低下。GreatSQL作为国产MySQL分支,兼容标准SQL并支持InnoDB存储引擎、索引优化和事务管理。通过虚拟机部署、systemd服务托管、建库建表、索引创建及交互式查询等步骤,可快速构建实验环境,理解基本表、视图、触发器等逻辑组件的物理实现。该实验链路适用于高校课程复现、国产数据库入门及DBMS原理验证,帮助学习者在真实环境中掌握SQL语法、约束设计和性能排查方法。 阅读详情

相关推荐

GreatSQL 8.0.32 CentOS 7 部署避坑指南:SELinux与firewalld配置关键点

数据库管理系统(DBMS)在Linux系统上的部署,本质是用户空间服务与内核安全策略的协同过程。其核心原理在于:mysqld等数据库进程需受控访问文件、端口和内存资源,而SELinux强制访问控制(MAC)与firewalld网络过滤机制会默认拦截非常规操作。技术价值体现在保障服务稳定启动与网络连通性——跳过SELinux策略调整或firewalld端口放行,将导致mysqld静默退出、3306端口监听失败等典型故障。该问题广泛存在于教学实验环境(如CentOS 7虚拟机)、信创适配场景及MySQL兼容分支

weixin_32325225的博客 196

【MySQL】更改表的主键报错及解决办法

[HY000][3750] Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause

叼辣条闯天涯 3736

CentOS 7安装GreatSQL 8.0.32完整指南:从二进制包到systemd

数据库管理系统(DBMS)是数据存储与查询的基础设施,其安装部署是数据库应用的第一步。以二进制方式安装数据库,需要理解系统库依赖、服务托管进程与数据目录权限等底层原理。在CentOS 7这类生产仍广泛使用的平台上,正确的glibc版本匹配、SELinux策略处置以及systemd服务配置,直接决定实例能否稳定运行。对于高校实验、开发测试或中小型生产环境,GreatSQL 8.0.32作为MySQL兼容的国产分支,提供了开箱即用的MGR增强与InnoDB并行查询能力。本文以GreatSQL 8.0.32-25

weixin_31220401的博客 194

MySQL组复制学习笔记(基于MySQL 8+) -- 使用篇

3.1. 启动/停止 可以通过start/stop group_replication来启动停止组复制进程. mysql> start group_replication; /* 启动MySQL组复制相关线程, 启动对应端口的监听, 如,33061 */ mysql> stop group_replicaiton; /* 关闭MySQL组复制相关进程*/ 可以通过group_replication_start_on_boot变量来指定是否随着MySQL启动而启动, 如果组没有其他成员, 第一

Li_Xiang_996的博客 3944

GreatSQL CentOS 7 实战部署与 InnoDB 并行查询调优手记

数据库部署不仅是安装服务,更是对 Linux 系统机制、存储引擎原理与工程实践边界的综合考验。GreatSQL 作为兼容 MySQL 协议的国产高可用分支,其 systemd 服务化部署、SELinux 权限适配、InnoDB 并行查询启用等环节,直击 CentOS 7 下数据库‘启动即失败’‘查询不走索引’‘日志无报错却连不上’等高频痛点。掌握 `innodb_parallel_read_threads` 调优逻辑与 `systemd` 服务文件编写规范,不仅能提升 OLAP 查询性能达数倍,更可支撑高校

weixin_33806859的博客 119

CentOS 7 部署 GreatSQL 数据库:从环境配置到 SQL 实验全流程

数据库系统原理课程中,环境部署与 SQL 实操往往是初学者最先遇到的障碍。掌握操作系统层面的基础配置,是数据库稳定运行的前提。SELinux 与防火墙的拦截策略、systemd 服务托管、依赖库的完整安装,这些看似琐碎的步骤却直接决定 mysqld 能否正常启动与监听。理解 InnoDB 引擎对文件读写、内存分配和端口通信的特权要求,才能从根本上规避启动失败与远程连接超时等典型问题。在此基础上,建库建表、索引设计与交互式 SQL 查询便有了可复用的实践模板。从单表 WHERE 条件到 IN 集合匹配,从外键

weixin_30522983的博客 114

mysql创建表失败

1、问题: 2、原因: sql语句报错 sql语句结尾要用“;” 表名字段名要用反单引号。 3、解决:

四水六年的博客 1537

GreatSQL数据库原理实验:部署、建表、查询与避坑全流程

数据库原理实验需要在真实 Linux 环境中把部署与 SQL 实操串成闭环。以 GreatSQL——基于 MySQL 8.0 内核的国产数据库发行版——为例,先理解 SELinux、防火墙对数据库端口与文件权限的影响,再完成二进制包安装、systemd 服务托管、数据目录初始化。随后围绕建库建表、字段类型、普通索引/唯一索引和外键约束,讲清数据页、表空间等物理概念;通过 WHERE、IN、BETWEEN 和日期函数的交互式查询演练,把 SQL 语法、索引生效条件及常见报错归纳为可复现的工程经验。这套流程既能

weixin_32175665的博客 310

MYSQL 8.0 主键检查sql_require_primary_key

MySQL 8.0.13 版本引入了一个新的参数sql_require_primary_key,创建新表或更改现有表结构的语句是否强制要求表具有主键。默认是OFF。 1. 开启后影响: 启用后, sql_require_primary_key具有以下效果: 尝试创建没有主键的新表失败并显示错误。这包括CREATE TABLE ... LIKE。它还包含CREATE TABLE ... SELECT,除非该CREATE TABLE部分包含主键定义。 尝试从现有表中删除主键失败并显示错误,

j_ychen的博客 6841

GreatSQL数据库实操:从CentOS 7安装到SQL查询与索引全流程

数据库原理是理解关系型数据库的基石,而SQL查询、索引设计与表结构约束正是其中最核心的实践技能。在学习或工程落地时,通常需要一套完整可复现的环境来验证这些概念——从操作系统层面的服务管理、访问控制,到数据库层面的建库建表、主外键关联,再到交互式SQL的查询优化。MySQL 8.0兼容的GreatSQL部署在CentOS 7上,恰好提供了这样一个轻量级实验场:既能让学生对照教材完成数据库原理实验报告,也能帮助开发者在真实环境中快速搭建可用的数据库实例。本文以GreatSQL安装为主线,串起systemd服务配

weixin_33391446的博客 225

Elsevier投稿别再踩坑了!手把手教你搞定LaTeX模板和所有附件(附避坑清单)

本文详细解析Elsevier投稿全流程中的关键环节,特别是LaTeX模板的使用和系统提交的常见问题。从必备文件准备到LaTeX模板适配,再到投稿系统操作指南,提供全面的避坑清单和实用技巧,帮助科研工作者高效完成投稿,避免因格式错误或文件遗漏导致的退稿风险。

weixin_30915275的博客 551

sql_require_primary_key参数详解

MySQL 8.0.13版本新引进一个参数,该参数非常实用,要求表有主键,减少了DBA对于代码的审计。官方文件信息:sql_require_primary_key: Whether tables must have a primary key. Added in MySQL 8.0.13. 实验 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show variables .

justaiiit的博客 4812

高动态范围结构光三维测量技术:从多曝光融合到深度学习的演进与应用

本文深入探讨了高动态范围结构光三维测量技术的演进与应用,从传统的多曝光融合技术到深度学习驱动的创新方案。通过工业案例展示了该技术在提升测量精度和效率方面的显著优势,特别是在处理高反光、复杂表面时的突破性表现。文章还提供了针对不同工业场景的技术选型指南,帮助工程师优化三维测量解决方案。

weixin_29063979的博客 293

GreatSQL配置文件my.cnf详解:新手必读的10个关键参数

GreatSQL 是一款开源免费、兼容 MySQL 的数据库,可在普通硬件上满足金融级高可用、高性能、高安全应用场景。对于刚接触 GreatSQL 的新手来说,**my.cnf 配置文件**是最先要掌握的技能——它决定了数据库实例的端口、存储路径、内存占用与性能表现。本文用通俗语言为你详解 my.cnf 中最关键的 10 个参数,帮你少踩坑、快上手。 ## 一、my.cnf 是什么?它在哪里?

gitblog_01097的博客 834

Cadence——原理图相关教程

包含创建文件,原理图,元器件,规则检查,PDF与BOM清单输出,各类PCB网表

haonanyayaya的博客 1万+

一个开源的AI数据分析工具,与数据对话,一键生成SQL、图表、表格、报告和智能商业分析。

Wren AI是一个开源的AI智能代理,让用户能够跟数据对话,实现从文本到SQL的转换,还能生成图表、电子表格、报告以及商业智能分析。它支持多种语言,能深入挖掘数据价值,提供智能数据探索功能,通过语义索引和精心设计的界面,让用户无需写代码即可获取洞察。Wren AI采用独特的架构,包含Wren UI、Wren AI Service和Wren Engine三大核心服务,可部署在本地或云端,助力团队高效、安全地解锁数据潜力。

AI_Charlotte的博客 4496

CentOS 7+ 安装 GreatSQL 8.0.32-26

GreatSQL 是基于 MySQL 8.0 打造的开源数据库,兼容 MySQL 协议,优化了性能、高可用(MGR 集群)等特性,适合生产环境部署。本文将详细讲解从环境准备、下载安装到配置优化、远程登录的完整流程,适配 CentOS 7+ 系统(systemd初始化),配置包含性能调优、日志规范、MGR 集群支持,新手也能快速上手。

weixin_65228533的博客 955

PostgreSQL与国产数据库技术选型实战:从内核对比到部署测试

关系型数据库作为现代应用的数据存储核心,其技术选型直接影响系统的稳定性、扩展性与长期成本。开源数据库PostgreSQL凭借其强大的SQL标准兼容性、完善的事务支持(ACID)以及独特的扩展机制(如PostGIS),在全球企业级应用中占据重要地位。随着云原生和分布式架构的普及,数据库技术价值不仅体现在单机性能,更在于弹性伸缩、高可用运维及生态整合能力。在此背景下,国产数据库通过借鉴与创新,在云原生架构、分布式事务及企业级管控等应用场景实现了快速发展。本文聚焦于PostgreSQL内核与国产数据库(如Pola

weixin_34200628的博客 412

基于未来出行解决方案的场景实例:城市空中交通(UAM)的飞行路径规划与避障

本文介绍了使用Simulink进行城市空中交通(UAM)飞行路径规划与避障的仿真方法。主要内容包括:1)UAM系统架构与核心挑战;2)详细建模步骤,从城市3D环境构建到飞行器动力学模拟;3)全局路径规划(A*/RRT*)和局部避障(DWA/APF)算法实现;4)多机协同与冲突解决;5)关键场景仿真与性能评估;6)高级功能拓展方向。通过Simulink的数字孪生系统,可有效验证UAM在复杂城市环境中的可行性,为未来立体交通发展提供技术支撑。

xiaoheshang_123的博客 257

『杭电1199』Color the Ball

Problem Description There are infinite balls in a line (numbered 1 2 3 ....), and initially all of them are paint black. Now Jim use a brush paint the balls, every time give two integers a b and follow by a char 'w' or 'b', 'w' denotes the ball from a to

漠宸离若的博客 497

Mysql索引的创建于修改

有关索引的操作 1、常看当前系统中默认的引擎 show variables like ‘default_storage_engine’; 2、查看表的引擎——通过看创表语句 create table t1(id int) engine=MyISAM; 3、建表的时候指定存储引擎 create table t1(id int) engine=MyISAM; 4、CREATE创建索引 ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引; CREATE INDEX可对

任天柳 821

物理AI:连接数字智能与物理世界的下一代人工智能范式

物理AI正在推动人工智能从纯数字领域向物理世界扩展,实现比特到原子的智能跃迁。与传统AI相比,物理AI具有三大核心差异:1)在物理环境中运行;2)处理多模态传感器输入;3)产生可改变物理状态的输出。其技术栈包含感知层(多模态融合)、决策层(边缘计算)、执行层(运动控制)和连接层(5G/6G通信)。关键技术挑战包括:实时多传感器融合、物理约束下的决策规划、以及高精度执行控制。物理AI的发展面临实时性保障、安全验证等核心挑战,但其在机器人、自动驾驶等领域的应用潜力巨大,正成为智能技术落地的关键突破口。

fudaihb的博客 1712

sql server的密码采用自带什么密码技术存储_【技术分享】浅谈MYSQL 8.0新特性

于树文云技术管理处01MySQL 8.0中添加的功能1.新的系统字典表整合了存储有关数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎进行存储。2.支持DDL 原子操作InnoDB表的DDL支持事务完整性,要么成功,要么回滚。将DDL操作回滚日志写入到data dictionary 数据字典表 mysql.innodb_ddl_log 中,用于回滚操作。3.安全和用户...

weixin_39525255的博客 289

假人有限元模型

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Oracle 到 TDSQL Mysql数据迁移

源端为 Oracle 11g 数据库在源端 Oracle 数据库创建测试用表 “test”.“qy”往表里插入测试数据表查询结果如下:目标端为 TDSQL 数据库,其中 kingdb 库下面只有图中 8 张表。暂时还没有名为 qy 的表,本次主要就是迁移 qy 这张表。迁移过程由于涉及不同数据库的各个方面的差异,会导致整个过程非常复杂。通常不会一帆风顺,会遇到各种意想不到的情况,所以也会面临多次失败的问题,大家一定要做好充分的心理准备。

qq_37686995的博客 5245

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Mysql建表时异常总结

mysql建表时异常总结

qq_39123467的博客 606

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: 【GreatSQL优化器-15】index merge
下一篇: 函数索引触发的一个有趣的问题
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值