Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >mysql (mariadb)存储proc错误

mysql (mariadb)存储proc错误
EN

Stack Overflow用户
提问于 2015-12-27 23:29:28
回答 1查看 109关注 0票数 0

提供表和当前proc的SQL

我有两个表-一个父表和一个带有元数据的表。我有一个存储的proc (我发誓它曾经工作过),它将基于行的数据从元表转换为列,并使用左联接将父表与行合并成列数据。我现在得到一个错误1064。

更新:为了调试目的,我在proc中输出了查询,我发现最后一行到列的枢轴从不提供列名(从metakey值中提取)。不管最后一列是什么,它总是在n个字符之后被截断(在截断之前似乎不一致)!以下是查询的完整输出.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT q.*,
MAX(IF(m.metakey = 'account_number', m.metavalue, NULL)) AS `account_number`,MAX(IF(m.metakey = 'area', m.metavalue, NULL)) AS `area`,MAX(IF(m.metakey = 'attachment_name', m.metavalue, NULL)) AS `attachment_name`,MAX(IF(m.metakey = 'attachment_token', m.metavalue, NULL)) AS `attachment_token`,MAX(IF(m.metakey = 'attachment_url', m.metavalue, NULL)) AS `attachment_url`,MAX(IF(m.metakey = 'description', m.metavalue, NULL)) AS `description`,MAX(IF(m.metakey = 'device_name', m.metavalue, NULL)) AS `device_name`,MAX(IF(m.metakey = 'email', m.metavalue, NULL)) AS `email`,MAX(IF(m.metakey = 'engine_files_attachment_name', m.metavalue, NULL)) AS `engine_files_attachment_name`,MAX(IF(m.metakey = 'engine_files_attachment_token', m.metavalue, NULL)) AS `engine_files_attachment_token`,MAX(IF(m.metakey = 'engine_files_attachment_url', m.metavalue, NULL)) AS `engine_files_attachment_url`,MAX(IF(m.metakey = 'fname_lname', m.metavalue, NULL)) AS `fname_lname`,

/** THIS IS WHERE THE ISSUE OCCURS **/
MAX(IF(m.metakey = 'how_connected_network', m.metavalue, NULL)) AS ,

m.json 
FROM support_ticket_queue q LEFT JOIN support_ticket_queue_meta m ON q.id = m.ticket_queue_id GROUP BY q.id

该程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELIMITER $$
CREATE PROCEDURE `p_support_ticket_queue`()
BEGIN

SET @sql = NULL;

SELECT 
    GROUP_CONCAT(
        DISTINCT CONCAT(
            'MAX(IF(m.metakey = ''',m.metakey,''', m.metavalue, NULL)) AS ','`',m.metakey,'`'
        )
        ORDER BY m.metakey
    )
INTO @sql FROM
    support_ticket_queue_meta m;

SET @sql = CONCAT ( 'SELECT q.*,' , @sql , ' , m.json FROM support_ticket_queue q LEFT JOIN support_ticket_queue_meta m ON q.id = m.ticket_queue_id GROUP BY q.id');

PREPARE stmt FROM @sql;

EXECUTE stmt;

END$$
DELIMITER ;

调用此proc将返回以下响应错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM support_ticket_queue q LEFT JOIN support_ticket_queue_meta m ON q.id = m.ti' at line 1

关于这两个表的概述情况如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
support_ticket_queue (the parent table)
---------------------------------------
id (primary auto increment)
vertical (varchar)
created_on (datetime)
updated_on (datetime)


support_ticket_queue_meta
---------------------------------------
id (primary auto incremenet)
ticket_queue_id (foreign key to id from parent table)
metakey (varchar)
metavalue (text)
EN

回答 1

Stack Overflow用户

发布于 2015-12-28 09:43:09

做了一些调试测试,并注意到我的GROUP_CONCAT模式在1024个字符后被截断。在网上做了一些进一步的搜索,发现GROUP_CONCAT实际上有1024的长度限制。

通过将group_concat_max_len值提高到更高的极限,解决了我的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET SESSION group_concat_max_len = 2500;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34489371

复制
相关文章
MariaDB MariaDB、MySQL存储过程、游标基础应用举例说明
CREATE TABLE IF NOT EXISTS profit_sharing
授客
2019/09/11
1.1K0
MariaDB存储引擎简介
MariaDB 有几十种存储引擎,但并不一定都是最佳。官网有简单针对各种用于,建议使用不同的引擎。大概如下:
后端码匠
2021/06/09
2.8K1
MariaDB存储引擎简介
【MySQL】MariaDB Galera Cluster(mariadb10.1.22)部署
Galera Cluster是MariaDB的一个双活多主集群,其可以使得MariDB的所有节点保持同步,Galera为MariaDB提供了同步复制(相对于原生的异步复制),因此其可以保证HA,且其当前仅支持XtraDB/InnoDB存储引擎(扩展支持MyISAM),并且只可在Linux下使用。 从MariaDB 10.1开始,在Galera Cluster中默认已经包含了wsrep API。在MariaDB 10.0和MariaDB 5.5时还是独立的,所以在安装部署上可能会有所不同,具体看MariaDB官方介绍。
用户5522200
2019/06/02
2K0
MariaDB 存储过程与函数详解
简单的说,存储过程就是一条或者多条SQL语句的集合,可以理解为脚本,但是起作用不仅限于批处理,下面我们将重点学习如何使用创建存储函数和过程,变量的调用查看等,存储过程是MySQL的一个重点内容.
微软技术分享
2022/12/28
1.6K0
MariaDB与MySQL比较
在MariaDB中,有如下针对MariaDB与MySQL两种数据库比较的官方说法:
从大数据到人工智能
2022/02/28
3.5K0
11.2 MySQL、MariaDB介绍
MySQL/Mariadb介绍 MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀) sun公司主要做Java 在后期后学到jdk,jdk 就是由 sun 公司开发的 oracle公司,专门做数据库的,都是比较大型的,比如银行等金融企业 oracle通常会装在小型机上,小型机和linux不同,叫做 Unix ,操作系统是unix,是收费的 小型机是一个 “超级” 计算机,这个 “超级” 是
运维小白
2018/02/06
2.1K0
MariaDB 10.0 和 MariaDB 10.1 存储过程中 PREPARE FROM EXECUTE 区别
  有一个更新表分区的存储过程,在MariaDB10.1.12下,是能正常运行的。某些业务要求,我同步了这个存储过程到另一台服务器的数据库中,版本为MariaDB10.0.19,这个存储过程执行报错!
星哥玩云
2022/08/16
6030
proc 编程错误处理机制及null处理
在连接数据库的过程中我们有的时候可能会遇到连接数据库出错、插入数据出错、sql语句写错等等情况,除了这些,我们还会在插入和读取数据时会遇到处理 null 值的问题,以下代码演示了如何对 sql 执行出错进行处理,并执行了一个 null 值插入的操作,中间引入了指示变量的概念,就是专门为了处理 null 值而存在的,注意在插入数据时,指示变量是紧随宿主变量的(:loc:loc_ind)。后面我们将介绍 select 查询出来的 null 值该如何处理。
我与梦想有个约会
2023/10/20
2570
proc 编程错误处理机制及null处理
浅谈MySQL和MariaDB区别?
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
咻一咻
2020/05/29
15.1K1
Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍
GROUP_CONCAT([DISTINCT] column_name [ORDER BY 序字段 ASC/DESC] [SEPARATOR '分隔符'])
授客
2019/09/11
1.6K0
Mariadb MySQL、Mariadb中GROUP_CONCAT函数使用介绍
Mysql分支选择:Percona Or MariaDB
本文将对MySQL官方版本以及最流行的两个分支:MariaDB 和 Percona Server进行对比介绍。笔者曾经遇到过一些同学,在可能在一个公司待了可能几年了,问他公司用的数据库是什么,他只能回答出,使用的是Mysql。当问到只是用的官方版本,或是哪一个分支时,他就一无所知了。本文将介绍这些分支产生的原因,以及在实际生产中,应该如何进行选择。并不会进行过多细节介绍,算是一个小科普。
田守枝
2019/05/21
9.8K0
Mysql分支选择:Percona Or MariaDB
CentOS下MySQL移至MariaDB
Google都将MySQL移至MariaDB了,我的朋友也Ubuntu下移至MariaDB,我还是不能落后吧,今天将CentOS下MySQL移至MariaDB。总结下我的步骤: 1、备份 首先是备份,保证所有数据安全,具体备份我就不详细说了。 2、卸载MySQL相关 yum remove mysql-* 卸载掉所有MySQL相关。 3、安装MariaDB mkdir /Download cd /Download wget http://yum.mariadb.org/5.5/centos6-amd64/r
小小科
2018/05/02
1.1K0
mysql(mariadb)如何更改root密码
mysql(或者mariadb,她是mysql的一个分支,完全开源,新版本的linux系统默认安装的是mariadb)如何更改root密码呢?我们主要介绍命令mysqladmin来实现。
周小董
2019/03/25
6.5K0
mysql(mariadb)如何更改root密码
MySQL和Mariadb数据备份恢复
备份命令格式: mysqldump -u用户名 -p 源库名 > ~/stu.sql --all-databases 备份所有库 mysqldump -u root -p --all-databases > /backup/databasefile/yzdb.sql Enter password: 备份单个库: 库名 备份单个库 备份多个库: -B 库1 库2 库3 备份多个库 备份单个表: 表名 备份单个库 备份多个表: 表名 表1 表2 表3 备份指定库的多张表 恢复命令格式 mysql -uroot
院长技术
2020/11/04
3.1K0
LAMP架构介绍,MySQL、MariaDB介绍,MySQL安装
LAMP架构介绍:  MySQL、MariaDB介绍: Community 社区版本   =开源版本 Enterprise 企业版    =  收费版本 GA(Generally Available)
叶瑾
2018/06/14
9910
LAMP架构介绍,MySQL、MariaDB介绍,MySQL安装
LAMP包含了四种东西,就是Linux+Apache(httpd)+MySQL+PHP的一个简写,Linux我们都很熟悉,它通常作为服务器操作系统,Apache则是一个提供Web服务的一个软件,它真正的名称是httpd。MySQL是数据库软件,存储的是一些数据、字符串、用户信息。PHP是一个脚本语言,和shell类似但是比shell复杂,如果接触过C语言的就知道PHP是用C语言开发的,它通常用来做网站,是前几年比较火热的一门语言,但是现在的趋势是向移动端互联网发展,在PC上访问网站的用户少于在手机上访问网站的用户,所以现在PHP的需求也没有以前高了。
端碗吹水
2020/09/23
1.2K0
LAMP架构介绍,MySQL、MariaDB介绍,MySQL安装
在 libevent 中使用 MariaDB(MySQL)
[腾讯云服务器 年付3折起【新用户限量秒杀】热门云产品限量秒杀,云服务器1核2G 16.5元/月起
赤孺
2019/07/29
1.1K0
使用mysqldump备份MySQL或MariaDB
在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具。本文将简介MySQL如何使用mysqldump工具进行数据备份。
无敌小笼包
2018/08/15
1.7K0
MySQL、 MariaDB 命令行工具
Installing & Using MyCli on Windows https://www.codewall.co.uk/installing-using-mycli-on-windows/
acc8226
2022/05/17
2.9K0
MySQL、 MariaDB 命令行工具
启用 MySQL 和 MariaDB 查询缓存
很多新手都在使用 Memcached 或者 Redis 扩展来加速服务器数据库的运行性能,其实这些扩展对于小博客的服务器来说有时候是个负担和安全隐患的,具体可以参考【理智冷静的使用 Memcached 或者 Redis】一文,那么不使用优化扩展我们如何来提升 MySQL 或 MariaDB 数据库的运行性能呢?
明月登楼的博客
2019/05/15
2.7K0

相似问题

Mysql存储的Proc调用错误

11

如何从Visual中执行MariaDB存储Proc?

19

无法在MariaDB上创建基本存储proc

13

MySQL -存储的Proc中的错误1064

15

mysql存储proc截断表

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文