SQL错误1406数据对于本地mysql mac osx上的列“concatenado”太长,它在Windows上工作得非常好

SQL错误1406数据对于本地mysql mac osx上的列“concatenado”太长,它在Windows上工作得非常好,mysql,macos,Mysql,Macos,我有一个函数,它允许我对每个表大小在50到90个单词之间的标题titulo进行压缩,直到我的subtitle subtitulo为空。最初这有varchar5000,我发现这个函数的返回值没有达到大约4000个单词,这个函数在Windows 8中运行良好,没有任何问题,我改为在MacBook pro osx 10.8.2中工作,我安装了Mysql最新版本,最近我也更改了安装MAMP,但Column仍然存在同样的问题,我更改了文本、长文本、BLOB、longBlob的类型。我的IDE显示消息“ru

我有一个函数,它允许我对每个表大小在50到90个单词之间的标题titulo进行压缩,直到我的subtitle subtitulo为空。最初这有varchar5000,我发现这个函数的返回值没有达到大约4000个单词,这个函数在Windows 8中运行良好,没有任何问题,我改为在MacBook pro osx 10.8.2中工作,我安装了Mysql最新版本,最近我也更改了安装MAMP,但Column仍然存在同样的问题,我更改了文本、长文本、BLOB、longBlob的类型。我的IDE显示消息“running…”,但没有停止,为什么我的功能在Windows而不是Mac上运行得很好,4天前我就遇到了这个问题

另外,我的SELECT@@max\u allowed\u数据包在结果1048576上显示问题是否存在?如果是这样,如何在MacOSX中添加更多的大小

 DELIMITER $$

 CREATE DEFINER=root@localhost FUNCTION fn_avanceFisico_ConcatenadoTitulos(pIdTitulo int) RETURNS varchar(5000) CHARSET utf8 BEGIN
DECLARE concatenado varchar(5000);

set concatenado='';

WHILE (ifnull(pIdTitulo,0) <> 0) do     
 SELECT concat_ws('</br> Subtitulo',concatenado,titulo),subtitulo into concatenado,pIdTitulo
 FROM ttitulo
 WHERE idTitulo=pIdTitulo;
 END while;

 RETURN concatenado;             

 END;

干杯

错误清楚地说明了这一点

您必须使此列在数据库中的长度更长

如果是varchar5000,则将其增加到varchar6000///这只是一个示例

考虑使用文本类型来存储长字符串。 试试看:

 DELIMITER $$

 CREATE DEFINER=root@localhost FUNCTION fn_avanceFisico_ConcatenadoTitulos(pIdTitulo int) RETURNS varchar(5000) CHARSET utf8 BEGIN
 DECLARE concatenado varchar(6000);
  .....
  .....

谢谢Echo的回答,正如你所说,我用varchar6000进行了更改,并用更多的varchar大小证明了这一点,还有不同的类型,如tex、long tex等,当我执行函数show me¨running…¨并且没有停止时。这意味着你的主要问题已经解决了,如果没有完成,你可以查看你的while循环,它仍然循环不停,我不知道那里发生了什么事。