mysql 查询命令 例:一张水果表,有苹果,香蕉,桔子,重量不等,现要查询出每一类水果重量最重的前十位。

mysql 查询命令 例:一张水果表,有苹果,香蕉,桔子,重量不等,现要查询出每一类水果重量最重的前十位。,第1张

如果fruit为表名:

select * from fruit a

where a.id in (select b.id from fruit b where a.proId = b.proId order by b.weight desc limit 10)

order by a.proId,a.weight desc

以上语法是正确的,但是有可能有的mysql版本不支持子查询中有limit

之前在做一个项目优化的时候,有个小朋友写了一个批量插入mysql表的功能,但却发生了如下异常:

意思是要插入的数据有2787754B约等于2.7MB,而mysql表中最大允许包为1048576B,即1MB,所以导致插入失败

在网上查了一下,MySQL会根据配置文件限制server接受的数据包大小,有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败。

要注意的是,“大”的插入和更新指的是整体接受的数据而言,所以除了插入或者更新的记录多可能导致数据包大小超过限制以外,单条插入或更新的记录很大也会导致数据包超过限制,导致失败,当然这种情况比较罕见。举个例子,在限制一公斤(1kg=1000g)重量的容器里,可以放1颗1公斤重的西瓜或者40颗25g的鸡蛋。对应的是在这个容器里放入一条记录,还是40条记录。

查看max_allowed_packet参数的设值是多少?

结果如下:

+--------------------------+------------+

| Variable_name | Value |

+--------------------------+------------+

| max_allowed_packet | 1048576|

| slave_max_allowed_packet | 1073741824 |

由此可知,max_allowed_packet限制了1MB的数据大小,超过这个阈值,MySQL便会抛出com.mysql.jdbc.PacketTooBigException异常

1. 修改MySQL的配置文件:

MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下;

在Linux下叫my.cnf,该文件位于/etc/my.cnf

在Linux下如果找不到my.cnf文件,可以通过如下命令查询:

找到该配置文件后,打开文件

加入或修改max_allowed_packet的值:

max_allowed_packet = 16M

具体设置多大,视情况而定,然后重启mysql就可以了

mysql重启命令:

线上情况,重启MySQL慎用,实在没办法的情况下才考虑

2. 执行命令修改:

进入mysql server

在mysql 命令行中运行

set global max_allowed_packet = 16777216

然后关闭掉这此mysql server链接,再进入。

show VARIABLES like '%max_allowed_packet%'

查看下max_allowed_packet是否编辑成功

注意:

这种情况虽然不需要重启MySQL服务,但是如果某一天MySQL需要重启,该设置就会恢复到原来的设置1MB

1.登录后台----system---Inport/Export先选择export,也就是先导出一个CSV格式的批量上传文件。如果网站里没有产品,需要先添加一个产品后才能导出一个批量上传用的CSV文件CSV文件可以使用EXCEL软件来编辑。2.导出选项说明在EXPORT里我们选择导出类型为Products,系统会自动刷新显示很多选项,这些不管,直接滚动浏览器到页面最底部,点击按钮导出。3.CSV文件说明在导出的CSV文件里,必填的几列如下:_media_attribute_id:产品属性ID,使用导出的CSV的默认值即可(必填);SKU:这个是必填而且全站必须唯一,不能有跟其他相同的,如果相同会覆盖掉(必填);_category:产品分类,如果产品属于一级的,则填写分类名称,比如分类名称为:Jewelry,那直接填写Jewelry即可,如果产品属于第二级的,则填写为:Jewelry/subcate(也就是把一级和二级的分类名称都填写进来,两个分类之间用斜杠分开)(必填);_root_category:默认值DefaultCategory,可不改动;Description:产品详细描述里的内容,支持填写HTML格式的(必填);Image:产品图片,产品图片必须都上传到Media/Import目录下(必填);_media_image:产品中图,可填写跟Image一样的图片路径(必填)small_image:产品小图,可填写跟Image一样的图片路径(必填);thumbnail:产品缩略图,可填写跟Image一样的图片路径(必填);name:产品名称(必填);price:产品价格(必填);special_price:产品特价(选填);status:产品状态,默认值1,如果不显示,就填写数字0(必填);short_description:产品简短描述(必填);visibility:产品是否显示的选项,默认值4(必填);weight:产品重量(必填);qty:产品数量(必填);is_in_stock:是否有库存,默认值1,如果产品没库存了,可填写为0(必填);meta_description:产品简短描述,用来显示在谷歌搜索结果那的一段文字(选填);meta_keyword:产品页面关键词(选填);meta_title:自定义网页标题,可与产品名称不同,谷歌优化使用,如果不填,默认使用产品名称做为标题(选填);其他列可按情况增加或删除。所有要批量上传的图片,都必须上传到FTP的www/media/import目录下,如果产品有分类为文件夹的,也都上传到import目录下4.那么在CSV里的填写路径是怎么样的?如果是直接图片的话,在CSV的IMAGE列里填写:/图片名称.jpg如果图片在某个文件夹下的,填写:/文件夹名称/图片名称.jpg注意文件夹名称不能有中文,有空格,最好是一个单词的。5.如何使用FTP软件上传图片到网站空间里?下载FTP软件—FlashFXP,安装完软件后,打开软件-------地址或URL里填写IP地址,输入FTP账户和密码,之后点击连接即可;然后把所有的本地电脑上的图片上传到/www/media/import/目录下;FTP软件的左边一般为本地电脑上的,右边为网站空间里的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7590279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存