您的当前位置:首页 >焦点 >从 MySQL 迁移到 GoldenDB,这个参数记得改! 正文
时间:2025-11-05 05:06:18 来源:网络整理编辑:焦点
大家好,我是君哥。最近从MySQL 迁移到 GoldenDB,踩过一个坑。之前分享过。再来回顾一下。事故现场我们先创建一张表test_1,SQL如下:复制CREATE TABLE`test_1` (
大家好,从M参数我是迁移君哥。
最近从 MySQL 迁移到 GoldenDB,个改踩过一个坑。从M参数之前分享过。迁移再来回顾一下。个改

我们先创建一张表 test_1,从M参数SQL 如下:
复制CREATE TABLE`test_1` ( `id`int(8) NOTNULL AUTO_INCREMENT,迁移 `column1`varchar(1) COLLATE utf8_bin DEFAULTNULL, `date_time` datetime DEFAULTNULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11DEFAULTCHARSET=utf8 COLLATE=utf8_bin1.2.3.4.5.6.往 test_1 插入 1 条数据,如下图:
复制INSERT INTO test_1(column1,个改date_time)VALUES (a,NOW());1.然后我们创建一张跟 test1 表结构一样的表 test2,
复制CREATE TABLE test_2 LIKE test_1;1.执行下面 SQL,从M参数
复制insert into test_2(column1,date_time) select "column1", now() from test_1;1.这条 SQL 并不复杂,从 test1 表查出数据写到 test2 表。迁移但不知道写代码的个改小伙伴出于什么考虑在 column1 上加了双引号。这个 SQL 在 MySQL(8.0 版本)上执行是从M参数没有问题的,但是迁移放到了 GoldenDB 上就报错了,因为双引号包着的个改字段返回的是 column1 这个字符串,最终字段超长报错(Data too long for column column1 at row 1)。
如果这个坑直接甩锅给 GoldenDB,并不合适。为什么这么说呢?公司专业的 DBA 大佬给了解答,之所以这个 SQL 在 MySQL 上运行没问题,云南idc服务商在 GoldenDB 上就会出错,是因为 ANSI_QUOTES 这个参数配置不一致。
ANSI_QUOTES 是 MySQL 数据库中的 SQL 模式选项,用于调整标识符与字符串常量的引用规则,使其符合 ANSI SQL 标准。可以使用下面的 SQL 临时开启:
复制-- 仅对当前会话开启 SET SESSION sql_mode = ANSI_QUOTES; -- 对之后的所有新连接生效(重启后失效) SET GLOBAL sql_mode = ANSI_QUOTES;1.2.3.4.或者修改配置文件开启,这样可以永久生效。
开启 ANSI_QUOTES 后,双引号 (") 被解释为标识符引号,作用与反引号 (`) 相同,用于引用数据库、表、字段等名称。例如下面 SQL 中的 name 被解释为列名,而 my_table 被解释为表名。
复制SELECT "name" FROM "my_table";1.而单引号则被解释为字符串,比如下面 SQL 查找结果返回 name 这个字符串:
复制SELECT name FROM my_table;1.关闭 ANSI_QUOTES 后(默认关闭),双引号 (") 被解释为字符串引号,与单引号 () 的作用完全相同。反引号 (`) 被用于引用标识符(如数据库名、表名、企商汇字段名)。下面的两个 SQL 返回的都是 name 这个字符串:
复制SELECT name FROM my_table; SELECT "name" FROM my_table;1.2.为什么要使用 ansi_quotes 呢?主要有 2 个原因:
1.兼容性和可移植性如果你的应用程序需要与多种遵循 ANSI SQL 标准的数据库(如 PostgreSQL, Oracle, GoldenDB)保持兼容,启用 ANSI_QUOTES 会很有帮助。这可以统一使用双引号来引用标识符,而不用担心数据库迁移会发生因为引号导致的异常。在信创改造的大背景下,这个参数作用很大。
2.SQL 规范一些开发团队要求必须遵循 SQL 标准,明确区分单引号用于字符串,双引号用于标识符。这可以使 SQL 的意图更加清晰,减少歧义。
ANSI_QUOTES 是 MySQL 数据库中的 SQL 模式选项,用于调整标识符与字符串常量的引用规则,使其符合 ANSI SQL 标准。这个配置开启,对于 SQL 规范化和数据库迁移很有帮助。
云服务器台式电脑SSD装机教程(从零开始,教你轻松完成台式电脑SSD的安装和配置)2025-11-05 04:22
U盘安装电脑系统教程(用U盘轻松安装电脑系统,快速高效!)2025-11-05 04:05
详解使用Dell原版Win10系统的安装教程(完美安装Dell原版Win10系统,无忧享受高效办公体验)2025-11-05 03:55
小米笔记本3代(高性能办公利器,带来无限便捷)2025-11-05 03:47
苹果电脑清灰教程(保护苹果电脑性能,拆解清灰是必须的)2025-11-05 03:40
飞利浦HX6730电动牙刷的优势与特点(享受高效洁净的口腔护理体验)2025-11-05 03:21
教你如何使用Windows10U盘进行装机(以简单易行的步骤让你轻松完成系统安装)2025-11-05 03:20
惠普2540打印机的全面评测(一款高效便携的打印解决方案,满足多种需求)2025-11-05 03:03
飞利浦42pf7320(探索飞利浦42pf7320的品质、功能和性能)2025-11-05 02:52
探索3D眼镜夹片效果2025-11-05 02:42
电脑驱动重装教程(轻松学会电脑驱动重装,解决设备冲突和性能问题)2025-11-05 05:06
升级iOS10.3.3带来的主题变化(探索苹果的全新主题体验)2025-11-05 05:04
古代后宫(一探后宫中的权力斗争和女性地位)2025-11-05 04:56
从771硬改775,让老旧设备焕发新生(将旧电脑升级至新一代处理器,提升性能与体验)2025-11-05 04:25
三星NX1855镜头的性能与特点(探索三星NX1855镜头的出色画质和创造性能)2025-11-05 04:12
探索P7P55DPro主板的功能和性能(一款强大的主板选择,满足您的需求)2025-11-05 04:08
200万像素相机时代的开启(以前置200万像素相机为主题的讨论)2025-11-05 03:54
苹果8通话音质的细致评测(揭秘苹果8通话音质的真实表现及用户评价)2025-11-05 03:24
电脑磁盘显示错误的原因及解决方法(探究电脑磁盘显示错误的常见原因及如何解决)2025-11-05 03:16
三星与荣耀(比较三星和荣耀的质量,了解真实情况)2025-11-05 02:43