IOS开发中 常常遇到的遇到的警告,错误汇总,解决方法

从sdk3.2.5升级到sdk 5.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了。

1,警告:“xoxoxoxo”  is deprecated

解决办法:查看xoxoxoxo的这个方法的文档,替换掉这个方法即可。

2,警告:Declaration of “struct sockaddr” will not be visible outside of this function

解决办法:在你的开源.m文件中添加 #import <netinet/in.h>

3,警告:Implicit conversion from enumeration type ‘UIInterfaceOrientation’ to different enumeration type ‘UIDeviceOrientation’

解决办法:类型不匹配。跳到出错的那一行,UIInterfaceOrientation强制转换为UIDeviceOrientation就行了。

4,警告:incompatible pointer types assigning to ‘MyArrayList*’from ‘NSMutableArray’

解决办法:加入强制转换(MyArrayList*)

5,警告:‘&&’ within ‘||’

问题出处:

if (exists && !isDirectory || !exists)………

解决办法: if ((exists && !isDirectory) || !exists)………

6,警告:Warning:The Copy Bundle Resources build phase contains this target’s Info.plist file

解决办法:将Info.plist文件移到Resources目录下,而不要直接放在target下。

7,警告:在使用ASIHttp…第三方库的,运行报错。

解决办法:看你的项目中是否添加CFNetwork.framework、SystemConfiguration.framework, MobileCoreServices.framework,

CoreGraphics.framework和libz.1.2.3.dylib,如果是sdk5.0以上,改添加libz.1.2.5.dylib

8,警告:xxxooo,missing required architecture i386 in file

解决办法:如果是错误信息的话:Target->Build Settings->Search Paths, 删除FrameworkSearch Paths 里面内容就可以了。

要只是一个警告的话,真机调试可以过。具体解决方法待大神出现。

9,警告:

clang: error: no such file or directory: ‘/demo2/控件代码/13/Recorder/Recorder_Prefix.pch’

clang: error: no input files

Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1

解决办法: 在你的主工程文件 target搜素,pch ,找到Prefix Header    把它后面的值,都删除,再运行就解决了。

10,警告:

“ARC forbids synthesizing a property of an Objective-C object with unspecified ownership or storage attribute

解决办法:如果定义了ARC有效,那么必须要有所有者属性的定义;所以代码改成下面这样

@property (nonatomic, strong, readonly) NSString *ss;

11,警告:

io6一下的xib系统均没有自动选择Use Autolayout, Supporting iOS 5 and below with xib of iOS 6

解 决办法:Just un-select “Use Autolayout” in the file inspector of the xib’s view and we are back to the familiar autosizing in size inspector and boom, it supports iOS 5 and below.

12,警告:

Warning: Multiple build commands for output file xxx.png

解决办法:找到项目里xxx.png重复,删除重复的资源。

11,  错误信息:

“_OBJC_CLASS_$  xxxxx  “, referenced from:

objc-class-ref in ViewController.o

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

解决方法:

查看工程,看是不是没有导入相关的框架。或者工程里添加的有相同”.m”,”.h” 文件

12,  错误信息:

Couldn’t register dy.CKRiLiText with the bootstrap server. Error: unknown error code.

This generally means that another instance of this process was already running or is hung in the debugger.Current language:  auto; currently objective-c

解决方法: 可能是电脑内存问题引起,重启电脑即可解决。如果重启解决不了问题,那就是你刚刚改动的代码引起的问题。

13 、 错误信息:

ios 5是调试正常的,ios 6真机调试的时候,出现如下错误:ld: file is universal (3 slices) but does
not contain a(n) armv7s slice: /Users/mac4/Desktop/my desktop/My app/MyApp name 20:09:12  /MyApp name/ZBarSDK/libzbar.a for architecture armv7serror:
linker command failed with exit code 1 (use -v to see invocation)

解决方法:在Xcode里,点击相应的Target,然后点Build Settings,找到VALID_ARCHS,看里面的是不是arvm7s,如果不是改成arvm7s就可以了。

14 、 错误信息:

error: receiver type ‘ViewController’ for instance message does not declare a method with selector ‘hideSearchBar:’ [4]

ViewController 中没有声明一个方法选择’hideSearchBar:

解决方法:

在ViewController .h 中声明一下这个方法 “ hideSearchBar ”  即可。

15、 错误信息:当json从服务端请求时得到的字符串,如果这样写的话,会报错,‘;’ after top level declarator

NSString *ss= @”{“recommend”:”世界末日”,”dogname“:”机器人”}”;

解决方法:

就是,把   “   替换成  \”  即可。NSString *ss= @”{ \”recommend \”:\”世界末日 \”, \”dogname \”: \”机器人 \”}”;

31,警告:

warning: Semantic Issue: Incompatible integer to pointer conversion assigning to ‘BOOL *’ (aka ‘signed char *’) from ‘BOOL’ (aka ‘signed char’)

解决办法: 检查 BOOL *换为BOOL就可以了,多写一个   *  号。

Xcode升级到4.4后,出现了一堆的Warning.网上搜了一些办法,总结一下。

32:Jsonkit中的

Direct access to objective-c’s isa is deprecated in favor of object_setClass() and object_getClass()

object->isa 替换为 object_getClass(object)

keyObject->isa 替换为 object_getClass(keyObject)

(id)keys[idx]->isa 替换为 object_getClass((id)keys[idx])

format specifies type ‘unsigned long’ but the argument has type ‘nsuinteger’ (aka ‘unsigned int’)

给变量增加(unsigned long)进行类型转换

33:md5加密(iOS SDK中自带了CommonCrypto

Implicit declaration of function ‘CC_MD5′ is invalid in C99

view plaincopy

#define CC_MD5_DIGEST_LENGTH 16

+(NSString *)MD5HashForString:(NSString *)input {

const char *cStr = [input UTF8String];

unsigned char result[CC_MD5_DIGEST_LENGTH];

CC_MD5(cStr, strlen(cStr), result);

return [NSString stringWithFormat: @”%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x”,

result[0], result[1], result[2], result[3],

result[4], result[5], result[6], result[7],

result[8], result[9], result[10], result[11],

result[12], result[13], result[14], result[15]];

}

引入函数定义的头文件

#import <CommonCrypto/CommonDigest.h>

34:ASIDataDecompressor中的警告

format specifies type  ‘short’ but the  argument has type ‘int’

在+ (NSError *)deflateErrorWithCode:(int)code 和 +(NSError *)inflateErrorWithCode:(int)code中

[NSString stringWithFormat:@”Compression of data failed with code %hi”,code] 中

将code改为 (short)code,类型转换

35:Reachability中警告

Using ‘stringWithString:’ with a literal is redundant

statusString = [NSString stringWithString: @”Not Reachable”];

改为:statusString = @”Not Reachable”;

36.format specifies type ‘id’ but the argument has type ‘const char *’

NSCAssert(NO, @”Unhandled error encountered during SAX parse. msg is %@”, msg);

改为:NSCAssert(NO, @”Unhandled error encountered during SAX parse. msg is %@”, [NSString stringWithUTF8String:msg]);

37    118:65: Using ‘stringWithString:’ with a literal is redundant

改为:self.locationInput.text = @”captured change”;

38 在项目中设置控件的layer属性时,会发生错误,”Property ‘c’ cannot be found in forward class object ‘CALayer *”,

这时需要引入  #import <QuartzCore/CALayer.h>。

41,错误

Error launching remote program: failed to get the task for process

解决方法:

把真机上的软件,删除,然后,clean 一下,重新运行就可以了。

42,真机调试的时候,出现

   这正常,但是不识别机器的。

解决方法:

把 ,

 设置为以上相对应的版本就可以了。

43,真机调试的时候,出现   ios Broken pipe

解决方法:

:推出xcode

:断开机器(iphone,ipad,ipod)链接

:重启iPhone在联接xcode,就可以了。

在用xcode4开发的时候,删除不用的文件后, 编译的时候会有missing file的警告,原因是由于SVN或git造成的。

如图:

解决方案:

1.运行终端,执行命令行进入missing file目录,然后运行

svn delete nameOfMissingFile

git rm nameOfMissingFile

2.删除隐藏的.svn文件。

命令行运行

defaults write com.apple.finder AppleShowAllFiles TRUE?

killall Finder

开启显示隐藏文件,然后到工程目录下删除.svn文件,然后再恢复

defaults write com.apple.finder AppleShowAllFiles FALSE

?killall Finder

3.进入工程目录,运行下面命令删除隐藏文件

find . -name .svn -exec rm -rf { } \;

使用Xcode 4时, 文件已经删除,但是会出现missing file错误,这一般是SVN或git造成的,有几种方法可以删除:

删除一个文件:

1.命令行进入missing file目录,然后运行

svn delete 文件名 或 git rm 文件名

批量删除的一个方法,删除.svn文件:

在终端中输入cd (有空格),将项目文件夹拖进入,回车

输入命令行:

rm -rf `find . -type d -name .svn`

再回车

引用:http://blog.sina.com.cn/s/blog_63e26d560100ve00.html

http://blog.csdn.net/mars2639/article/details/7374532

解决警告“ld: warning: directory not found for option”

(2013-06-02
03:01:56)

转载▼

标签:

it

分类: iOS开发

从项目中删除了某个目录、文件以后,编译出现警告信息:

ld: warning: directory not found for option“XXXXXX”

很奇怪,为什么已经从项目中删除了文件和文件夹还是报这个警告呢?

去掉警告的办法如下:

1选择工程, 编译的 (targets)

2选择 Build Settings 菜单

3查找 Library Search Paths 和 Framework Search Paths, 删掉编译报warning的路径即OK

Crash原因

Crash原因有共性,归纳起来有:

?6?1 内存管理错误

?6?1 程序逻辑错误

?6?1 SDK错误 (部署版本< 编译版本)

?6?1 主线程阻塞

内存管理错误

内存管理是iPhone开发所要掌握的最基本问题,特别是使用引用计数手动管理内存的情况。内存管理错误包括:

?6?1 内存泄漏:未释放不会再使用对象。比如alloc忘记release,malloc忘记free。可用XcodeProduct菜单下的Analyze功能来解决该问题;

?6?1 引用出错:引用已经被释放的对象指针。很多“莫名其妙”的Crash都是由于窗体经历的生命周期所导致的(viewDidUnload、viewDidLoad),在iOSSimulator里模拟内存警告就可以解决该问题;

?6?1 内存警告:App使用的内存超出设备的限制,iOS将强制挂起App,强制挂起iOS是不会记录Crashlog,Flurry也无法记录。内存泄漏、快速/大量的分配内存都可能导致内存警告,这时候应该尽可能的释放不需要的资源。通过Instruments->Allocations里的Heapshot功能能够找出哪些资源未被释放。

WWDC 2012的Session242 - iOS App Performance_ Memory是专门讨论内存管理这个话题。

程序逻辑错误

数组越界、堆栈溢出、并发操作、逻辑错误。扎实的编码基础、严谨细致的工作习惯、清晰的思路可以避免这类错误;

SDK错误

这个错误出现的现象是有的设备运行正常,有的会Crash。原因是未找到框架、类、方法、属性。比如:用iOS5.0 SDK编译并运行在iOS4.0的设备上,5.0的Twitter框架在4.0的设备上找不到。这种问题常出现在用苹果新发布的Xcode编译原有的工程。

未找到框架的解决办法是:部署版本>= 编译版本。iOS框架向后兼容做的很棒,部署版本> 编译版本一般不会出现问题。

未找到类、方法、属性的解决办法是:先判断是否存在再使用

if(NSClassFromString(@"MFMailComposeViewController"))

respondsToSelector:

主线程阻塞

主线程阻塞超过10s,iOS将强制挂起App。把长时间的任务放到后台线程去执行,可使用NSThread,NSOperation, dispatch。WWDC2012的Session235 - iOS App Performance_ Responsiveness有详细的介绍。

解决Crash

思路是:定位Crash的程序代码,预测Crash原因,寻找解决方案,测试。

有多种方式可以定位Crash的程序代码:

?6?1 Debug模式时,iOSSimulator断点测试定位Crash的堆栈;

?6?1 真机连接iTunes查看Crashlog (Debug模式下);

?6?1 通过Flurry的错误记录查看;

定位之后,就是重新思考程序上下文逻辑,并有理由的预测Crash出现的原因。预测的越多,理解的越深。

寻找解决方案的方法有:

?6?1 浏览苹果官方SDK文档,找出错误原因;

?6?1 Google搜索Crash输出的信息,重点查找行业内技术论坛:cocoachina、stackoverflow、iphonedevsdk等;

?6?1 查看历届WWDC的视频、示例代码;

?6?1 在工程里添加环境变量: NSZombieEnabled、NSDebugEnabled,输出有价值的信息;

?6?1 如果未找到任何信息,可以寻求苹果官方论坛、业内技术论坛的帮助; 

测试

找到解决方案后就需要测试,测试功能输入输出的准确性、程序性能、是否引入新的bug。测试有专业的测试工程师来负责,但开发工程师不能依赖测试工程师来发现问题,尽量独立解决已知存在的问题。

由于Xcode部署工程到真机上比较耗时间,如果可以的话尽可能用iOSSimulator来测试,以减少测试的时间。

建议开发工程师有一个checklist,在产品测试时自己逐一过一下上面常见的问题,这个能够避免大部分Crash。下图是我们一个产品的FlurryError记录,那120个错误Session是测试Crash时留下的。当然这个记录是没有包括iOS将强制挂起App的情况。

1.

常见的EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION错误,一般是因为访问已经被release的对象造成的。

最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里。通常这样的崩溃出现,原因一般就是:调用了已经释放的内存空间,或者说重复释放了某个地址空间

在工程中加入NSZombieEnabled 环境变量,并设为启用,则在 EXC_BAD_ACCESS 发生时,XCode 的 Console 会打印出问题描述中,设置方法:双击Executables 下的 可执行模组,在弹出窗口中,Variables to be set in the environment,添加 NSZombieEnabled,并设定为 YES,点击选中复选框启用此变量。

可以再加入 MallocStackLogging 来启用malloc记录,以获得更多的提示来帮助定位问题。

一般服务端返回的字符串为nil 如果不加判断

NSArray ,mutableArray 等没有申请内存,直接用

block 直接用有时会造成这样的bug block可能为空

遇到这种问题,看代码,看实现的逻辑,打断点,return ,po ,bt 指令,网上查资料,

2.内存问题,循环引用,代理用strong

代理要assign ,或者weak ,

block 也可能导致循环引用 __block __weak blockSelf=self;

__weak clsass=[Class alloc]init;

内存泄露 delloc 把代理设为空

3.removeFromSuperView ,然后复位空

在做适配的又xib 添加约束,要自己添加UITableView的时候,要把元来的移除掉

4.UITableView卡顿的问题

复用之前还要把cell之前的数据清空

关于常见场景:大IO、复杂算法、大量创建对象、大量添加View等等都有可能消耗性能。不过常见的case一般都是IO,比如楼主说的下载图片。

除了使用异步下载之外,还需要注意异步下载的状态,因为建立连接也是需要消耗资源的,虽非当前线程资源,但整个设备的资源依然是有限的,如果你同时建立上百个异步下载连接(例如用户滑动经过了上百条Cell),系统也会卡顿,这也是需要注意的

5.做IOS适配的时候

4s 首次安装的时候数据无法显示,WIFI 连接问题,非必现

6.闪退,url,不存在,方法不当都有导致闪退

7.数据 后台更新前台无法接受,有可能是后台的问题

8,需求变更,需求不确定,后台数据,

在Xcode6下开发时,使用autolayout的xib出现警告:Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0

原因:xcode6下默认开启自动设置UILabel的preferredMaxLayoutWidth 的属性,而自动的特性只支持iOS8,故导致这个警告,如果想兼容iOS7则需要消除。

解决方法:设置固定的preferredMaxLayoutWidth  (勾选Explicit(其中如果label不是多行就不用勾选了,因为无效)如果只想支持iOS8就不要勾选了,动态的更加方便),如下图,并在代码中实时修改此属性(注:此属性只对多行的UILabel有效,即lines不为1,如果是1行的不需要修改)。

参考:http://stackoverflow.com/questions/25398312/automatic-preferred-max-layout-width-is-not-available-on-ios-versions-prior-to-8

performSelector may cause a leak because its selector is unknown

from:http://stackoverflow.com/questions/7017281/performselector-may-cause-a-leak-because-its-selector-is-unknown

第一种解决办法:

As a workaround until the compiler allows overriding the warning, you can use the runtime

objc_msgSend(_controller, NSSelectorFromString(@"someMethod"));

instead of

[_controller performSelector:NSSelectorFromString(@"someMethod")];

You‘ll have to

#import <objc/message.h>

第二种:

To ignore the error only in the file with the perform selector, add a #pragma as follows:

#pragma clang diagnostic ignored "-Warc-performSelector-leaks"

第三种:

#define SUPPRESS_PERFORM_SELECTOR_LEAK_WARNING(code)                            _Pragma("clang diagnostic push")                                            _Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"")         code;                                                                       _Pragma("clang diagnostic pop")                                         

SUPPRESS_PERFORM_SELECTOR_LEAK_WARNING(
    return [_target performSelector:_action withObject:self]
);

Warning: Multiple build commands for output /.../...

出现这种 Warning 的原因

由于将原来资源文件包删除,重新加入后,导致编译器在编译时,又一次引入了该资源!也就是说,编译的外部资源引入重复!

解决方法:

如何避免种情况的发生

1.删除项目文件,要从工程中删除。

2.切记,同一个资源不可重复引用到工程中。

3.添加资源,要从工程中添加。

4.最好,再删除资源后,先Clean 一下项目。

iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance)

转:点击打开链接

iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里。通常这样的崩溃出现,原因一般就是:调用了已经释放的内存空间,或者说重复释放了某个地址空间。而怎样定位到这个地址呢,可以通过编辑xcode的scheme,添加如下标记位,让系统把错误地址打印出来,如图:(通过Product->Scheme->Edit
Scheme进入下面编辑页面,选中Arguments tab,增加标计位NSZombieEnabled设为YES)

这样,但崩溃出现,系统会出现以下提示信息:

2013-06-23 00:45:20.479 *** -[__NSArrayM addObject:]: message sent to deallocated instance 0x7179910

可见崩溃原因是内存地址0x7179910被重复释放了。

       如果崩溃是发生在当前调用栈,通过上面的做法,系统就会把崩溃原因定位到具体代码中。但是,如果崩溃不在当前调用栈,系统就仅仅只能把崩溃地址告诉我们,而没办法定位到具体代码,这样我们也没法去修改错误。这时就可以修改scheme,让xcode记录每个地址alloc的历史,这样我们就可以用命令把这个地址还原出来。如图:(跟设置NSZombieEnabled一样,添加MallocStackLoggingNoCompact,并且设置为YES)

这样,当出现崩溃原因是message sent to deallocated instance 0x7179910,我们可以使用以下命令,把内存地址还原:

info malloc-history 0x7179910

如图,这个命令能具体把这个地址在哪一行代码生成还原出来。

(需要注意的是,因为这个命令只支持gdb,所以必须把控制台的输出改成gdb,并且有点遗憾的是,只支持模拟器,不支持真机调试)

(同样是通过Product->Scheme->Edit Scheme进入上面编辑页面,选中Info tab)这样,好好检查一下那一行的代码,应该就很容易找出问题所在了。

Warning: Multiple build commands for output /.../...

出现这种 Warning 的原因

由于将原来资源文件包删除,重新加入后,导致编译器在编译时,又一次引入了该资源!也就是说,编译的外部资源引入重复!

解决方法:

如何避免种情况的发生

1.删除项目文件,要从工程中删除。

2.切记,同一个资源不可重复引用到工程中。

3.添加资源,要从工程中添加。

4.最好,再删除资源后,先Clean 一下项目。

时间: 2024-10-03 17:26:59

IOS开发中 常常遇到的遇到的警告,错误汇总,解决方法的相关文章

在ios开发中使用 try 和 catch 来捕获错误。

本文转载至 http://blog.csdn.net/remote_roamer/article/details/7105776 抛出错误的代码 [cpp] view plaincopy //如果返回的报文是错误信息,则抛出错误 if([outParams count] <= 0) { [NSException raise:@"WebService error" format:@"%@", returnJson4SOAP]; } 在调用中捕获错误代码 [cpp

〖Android〗从Android Studio转为Eclipse开发项目报E/StubController(23964): service = null 错误的解决方法

很久没有撸Android App开发了- 最近把一个月前通过反编译.二次修改的Android SSHD项目进行简单修改一下: 突然发现迁移项目时,报了一个错误: 04-29 20:20:11.493: W/dalvikvm(23964): threadid=1: thread exiting with uncaught exception (group=0x41b2cc50) 04-29 20:20:11.543: E/StubController(23964): service = null

Win系统下用Eclipse中运行远程hadoop MapReduce程序常见错误及解决方法

一.Permission denied 1.Win系统下用Eclipse中运行远程hadoop MapReduce程序出现报错 org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=xxx, access=WRITE, inode="xxx":xxx:supergroup:rwxr-xr-x

【iOS开发】iOS开发中经常用到的延迟发生某些事实现方法

方法一 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //写要发生的代码:2秒以后发生 }); 方法二 [self performSelector:<#(发生的方法)#> withObject:<#(id)#> afterDelay:<#(几秒以后发生)#>]

移动web开发中自己遇到的三个小题及解决方法

大家好! 这是我第二次写随笔感想,有不足之处希望大家提出,我也算的上一个小白,自己进入前端行业也刚刚半年,在这里半年里我遇到一个技术大牛的好领导,让我在项目中学到很多,想和大家分享一下! 一. 移动端禁止选中内容 如果你不想用户可以选中页面中的内容,那么你可以在css中禁掉: .user-select-none { -webkit-user-select: none;  /* Chrome all / Safari all */ -moz-user-select: none;     /* Fi

xcode开发中遇到unrecognized selector sent to instance 0x........的解决方法

首先贴一下问题代码 1 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 2 if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 3 UIButton *numberButton = [UIButton buttonWithType:UIButtonTypeCustom]; 4 numbe

在VS中使用Boost库出现Macro redefinition错误的解决方法(warning C4005)

position:static(静态定位) 当position属性定义为static时,可以将元素定义为静态位置,所谓静态位置就是各个元素在HTML文档流中应有的位置 podisition定位问题.所以当没有定义position属性时,并不说明该元素没有自己的位置,它会遵循默认显示为静态位置,在静态定位状态下无法通过坐标值(top,left,right,bottom)来改变它的位置. position:absolute(绝对定位) 当position属性定义为absolute时,元素会脱离文档流

virtualbox虚拟机中mysql远程连接登陆报2003错误的解决方法

最近在virtualbox中安装了Ubuntu 14,配置了一个mysql server,设置的桥接网络模式.在其他电脑连接的时候,总是报2003错误.开始以为是localhost没有置换为%,运行update语句将其置换,依然不行.后来发现是因为mysql的默认配置文件/etc/mysql/my.cnf 中有一行: bind-address            = 127.0.0.1 就是说,默认绑定了ip,只限本机访问.将本行加#注释掉,远程访问正常.

Mysql数据中Packet for query is too large错误的解决方法

有时,程序在连接mysql执行操作数据库时,会出现如下类似错误信息: Packet for query is too large (4230 > 1024). You can change this value on the server by setting the max_allowed_packet' variable. 这个错误的大致原因是:向mysql数据库发送查询命令时,默认性况下,一个包的大小是1024,实际一条语句的长度,就大小这个,所以执行语句报错.解决的方式,就是调整mysq