最近因为公司项目需要,必须使用DB2,因为原来一起用Oracle MySQL的,使用了DB2才知道什么叫数据库中的垃圾,而且是臭气熏天的垃圾!
罪状之1:更改表结构超级麻烦
假设有以下一个表:
create table t1(a int,b int c int,d int);
你希望删除b,c,d新增e,f
alter table t1 drop column b;
alter table t1 drop column c;
alter table t1 drop column d;
alter table t1 add e int;
alter table t1 add f int;
这是一个再简单不过的表结构更改语句了,在DB2中一执行,到第4行居然就报错了,错误是:
引用
SQL20054N 所处的状态对该操作无效.原因码 23
查了
http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.messages.sql.doc/doc/msql20054n.html?cp=SSEPGG_9.7.0%2F2-6-27-19-45&lang=zh-cn
才知道,DB2拥有一个如果恶心的限制:
引用
对表结构更改最多只能做3次,3次后必须要求你执行reorg命令!!!
也就是说,你必须在第3和第4句之间手工加入:
alter table t1 drop column b;
alter table t1 drop column c;
alter table t1 drop column d;
reorg table t1;/*这里要你手工插入*/
alter table t1 add e int;
alter table t1 add f int;
reorg table t1;/*为了防止后续的更改出错,全体变更完成后,你还要在这里手工插入*/
这种完全可以由DB2自己内部去做的事情,居然要踢给用户手工去做,完全不顾使用者的感受,学院主义,官僚主义暴露无遗啊!
罪状之2:数据分页
mysql直接使用limit x,y 就可以实现分页了:
select * from table limit 10,20
Oracle通过子查询实现分页:
select * from (select rownum,name from table where rownum <=endIndex ) where rownum > startIndex
下面再来看看DB2的分页:
select * from ( select ROW_NUMBER() OVER( ORDER BY DOC_UUID DESC ) AS ROWNUM,t.*
from DT_DOCUMENT t ) a
看到那串神奇的ROW_NUMBER() OVER( ORDER BY DOC_UUID DESC )没有,如果你需要按序排序,DB2要求你写这个奇怪的语法。想想将一个普通的SQL转换为分页的SQL有多难啊。(幸亏Hibernate的Dialect类可以帮忙我们完成,否则会吐血三升而亡的

)
DB2的罪状,还很多啦,后续不断补充上,很欢迎大家涮涮IBM那一群群头上长角,浑身长刺的怪胎。
分享到:
相关推荐
内容概要:本文详细介绍了三菱FX5U系列PLC的16点数字量输入扩展模块FX5-16EX的应用与调试要点。首先讲解了硬件连接的关键步骤,包括正确接线方法、电源配置以及模块安装注意事项。接着探讨了编程部分,展示了如何使用结构化文本(ST)进行输入信号处理,并提供了具体的代码示例。此外,重点讨论了常见的调试问题及其解决方案,如信号滤波设置、输入信号抖动处理、模块状态诊断等。最后分享了一些实际应用场景的经验,强调了细节处理的重要性。 适合人群:从事工业控制系统设计、安装和维护的技术人员,尤其是熟悉三菱PLC系统的工程师。 使用场景及目标:帮助技术人员掌握FX5-16EX模块的正确使用方法,提高系统稳定性和可靠性,减少调试时间和成本。 其他说明:文中提到的具体操作和代码示例有助于读者更好地理解和应用相关技术,避免常见错误。
内容概要:本文详细介绍了使用C#和WPF构建智慧工厂数据平台的过程,涵盖系统框架设计、MVVM模式应用、统计图表绘制、页面布局规划及动画效果实现等方面。文章首先阐述了分层架构的重要性,展示了如何分离数据访问层、业务逻辑层和表示层。接着讲解了MVVM模式的具体实现,包括ViewModel作为视图和模型间的桥梁,确保数据与界面的解耦。随后探讨了利用LiveCharts库创建各类统计图表的方法,使数据呈现更加直观易懂。此外,还讨论了页面布局的最佳实践,如使用Grid进行区域划分,以及如何通过动画增强用户体验。最后提供了完整的源代码链接,帮助开发者更好地理解和扩展该项目。 适合人群:熟悉C#编程语言并有一定WPF开发经验的研发人员,尤其是关注工业互联网、智能制造领域的技术人员。 使用场景及目标:适用于希望构建高效、可视化的智慧工厂数据管理系统的团队。主要目标是掌握如何运用现代软件工程技术,如MVVM模式、数据绑定、高性能绘图库等,快速搭建稳定可靠的数据展示平台。 其他说明:文中不仅包含了详细的理论解释和技术要点,还有大量实用的代码片段供参考。同时强调了性能优化的重要性,如避免过度刷新UI、合理设置动画效果等。
项目资源包含:可运行源码+sql文件+文档; python3.8+Flask+mysql5.7+spider+vue 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条(旅游景点、周边住宿、周边美食、公告栏),通过导航条导航进入各功能展示页面进行操作。在个人中心页面可以对修改密码、我的收藏进行详细操作。 管理员进入主页面,主要功能包括对系统首页、用户、旅游景点、周边住宿、周边美食、美食分类、系统管理、个人资料等进行操作。
系统名称:基于Java的学校访客登记系统 技术栈:Java、JSP、SQL Server、B/S体系结构 系统功能:管理员功能:个人中心、用户管理、校园公告管理、员工管理、注册学生管理、留言板管理、系统管理;员工用户功能:访客信息管理、教职工登记管理、家庭来访管理;学生用户功能:家庭来访申请 摘要:伴随着学生基数的不断的扩大和增长,各大高校也面临着巨大的困难和考验,这不仅是对于高校的考验也是对于高校在学生管理上的一个巨大的考验。其中在位重要的就是校园的安全管理,学校不仅要给学生创造出一个良好的学习环境,还需要给学生提供一个安全的生活环境。在学生的在校期间的校园的安全管理方面学校的管理人员也尤为的重视,确保学生在校期间的生命安全和生活安全。许多的高校都在实行学校的访客登记管理,在另一方面是在确保学生在校期间的校园安全,避免一些不确定因素对学生生命安全造成威胁。在学校的管理方面之中,伴随着计算机行业和软件行业的快速的发展,许多的校园的管理模式和类型也在伴随着信息化的发展而发生着巨大的变化和改革。一些信息化的校园管理系统也在许多的校园的管理之中盛行和投入使用,通过信息化的管理模式和理念,实现高校都具特色的信息化的教育模式。进一步的促进了教育事业的快速的发展。
ISO 13349-1-2022.rar
内容概要:本文详细介绍了基于三菱FX1N-30MR PLC和威纶TK6070触摸屏的恒压供水系统的实战应用。主要内容涵盖系统的关键功能如定时锁定、模式切换、PID控制、故障联锁以及小泵控制等。文中不仅提供了具体的梯形图代码片段,还分享了许多实际调试经验和注意事项。例如,定时锁定功能通过M384和M385实现,确保系统稳定运行;模式切换由M400-M403控制,可在触摸屏上进行选择;PID控制可以选择变频器或3A模块,后者提供更平稳的压力曲线;故障联锁机制能够在变频器故障时自动切换到工频泵,保障供水安全;小泵控制则用于应对压力波动,保持管网压力稳定。 适用人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和触摸屏应用有一定基础的人群。 使用场景及目标:适用于需要理解和实施恒压供水系统的工程项目。目标是帮助读者掌握三菱PLC和威纶触摸屏的具体应用技巧,提高系统的可靠性和效率。 其他说明:文中提到的一些特殊操作和调试技巧,如通过D129输入4016解锁系统,以及在触摸屏上设置隐藏菜单等,有助于解决实际工程中的常见问题。此外,文章强调了硬件配置和通信设置的重要性,提醒读者在实际操作中避免常见的错误。
内容概要:本文探讨了在机械模型设计和技术交底书中引入创新方法的应用。首先介绍了技术交底书的概念及其重要性,随后展示了通过Python代码实现机械臂扭矩计算和动态调整的具体案例。接着,文章深入讲解了如何利用参数化设计和自动化工具如PyYAML、pyNastran、OpenSCAD等提高设计效率和准确性。此外,还讨论了将FEA结果反向写入交底书以及使用机器学习进行轨迹预测的方法。最后,强调了技术交底书作为动态数据库的角色,结合版本控制和自动化流程提升协作效率。 适合人群:机械工程设计师、自动化工程师、从事机械模型设计的专业人士。 使用场景及目标:适用于希望提升机械模型设计效率和质量的团队,旨在通过技术创新优化设计流程,减少重复劳动,提高设计灵活性和精确度。 其他说明:文中提供了多个具体代码示例,帮助读者更好地理解和应用所介绍的技术手段。同时,强调了跨学科合作的重要性,特别是在现代机械设计中融合编程和数据分析的能力。
内容概要:本文详细介绍了发那科机器人与西门子1200 PLC协同作业的真实项目案例。项目涉及六台发那科机械臂和西门子1200 PLC的集成,通过威纶通触摸屏进行人机交互。主要内容涵盖Modbus TCP和RTU通讯、状态机编程、结构化编程(如气缸控制FB块)、以及机器人KAREL语言的应用。文中还提供了具体的代码示例,展示了如何实现机械臂控制、视觉定位、激光测距等功能。此外,作者分享了许多实际调试经验和技巧,如数据包结构解析、路径规划优化等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是有PLC编程和机器人集成经验的人群。 使用场景及目标:适用于需要将发那科机器人与西门子PLC集成的工程项目,旨在提高生产效率和稳定性。目标是帮助读者掌握复杂的通讯协议和控制逻辑,减少调试时间和成本。 其他说明:文中提供的源码和安装包可以帮助读者快速上手并应用于实际项目中。作者强调了结构化编程的优势,并分享了一些实用的调试技巧和注意事项。
内容概要:本文详细介绍了塑料检测机的控制系统设计,涵盖硬件架构、PLC编程、视觉检测、伺服控制等方面。硬件上采用台达EH3 PLC作为主控,配备1PG定位模块、B2伺服电机和步进电机,以及工控相机进行视觉检测。PLC程序中涉及关键子程序Camera_DataProcessing用于处理视觉数据,通过FROM/TO指令与视觉模块通信,实现物料定位补偿。伺服控制部分利用PLSY指令发送脉冲,确保精确运动。触摸屏程序提供手动调试界面,支持宏指令控制伺服点动。电气图纸强调电源分配和EMI防护,确保系统稳定运行。故障排查经验和项目文件管理也被提及,如关键状态标志的冗余判断和详细的注释文档。 适合人群:从事自动化控制、机电一体化、工业机器人等相关领域的工程师和技术人员。 使用场景及目标:适用于塑料加工行业的质量检测环节,旨在提高检测精度和生产效率,减少人工干预,优化人机交互体验。 其他说明:文中提供了丰富的调试经验和故障排除技巧,有助于实际项目的顺利实施和后续维护。
RAG一篇文章介绍多模态RAG(MRAG)
解压后 1:配置完MySQL 用户和 azkaban数据库 2:根据服务器配置 修改azkaban 就能直接使用
内容概要:本文详细介绍了基于西门子S7-1200 PLC的五轴伺服运动控制系统的设计与实现。主要内容涵盖手动模式、自动运行状态机、伺服模式切换、断电保持以及报警处理等方面的技术细节。作者通过结构化编程的方法,将复杂的多轴控制任务分解为多个独立的功能块,确保系统的灵活性和可扩展性。文中提供了具体的代码示例,展示了如何利用TIA Portal平台进行高效编程,解决了诸如急停连锁、模式切换平稳性等问题。此外,还分享了一些实用的小技巧,如通过触摸屏实现模式切换、采用环形缓冲区记录报警信息等。 适合人群:从事工业自动化领域的工程师和技术人员,特别是对PLC编程和伺服控制有一定基础的人群。 使用场景及目标:适用于需要构建稳定可靠的多轴伺服控制系统的企业和个人开发者。主要目标是帮助读者掌握结构化编程的思想和具体实现方法,提高编程效率并减少错误发生概率。 其他说明:文章不仅讲解了理论知识,还包括大量实际案例和代码片段,便于读者理解和应用。同时强调了良好的编程习惯对于复杂工程项目的重要性。
内容概要:本文详细介绍了基于QT(C++)的权限管理平台源码,涵盖了用户管理、角色管理、角色权限管理、菜单管理和日志管理等多个功能模块。用户管理模块负责处理用户的注册、登录、信息修改和删除等操作;角色管理模块允许创建不同角色并将角色信息存储到数据库;角色权限管理模块通过关联表将权限分配给角色;菜单管理模块用于维护平台展示的菜单结构;日志管理模块记录平台上的各种操作以便追溯和排查问题。开发工具使用QT 5.14.2和MySQL57,支持Windows、Linux和MacOS平台。 适合人群:具备一定C++和QT开发经验的研发人员,尤其是对权限管理系统感兴趣的开发者。 使用场景及目标:适用于需要开发跨平台权限管理系统的团队和个人开发者,帮助他们理解和实现用户认证、权限控制、日志记录等功能。通过学习本平台的源码,开发者可以掌握QT框架下的数据库操作、UI设计、权限验证等关键技术。 其他说明:文中不仅展示了各功能模块的具体实现代码,还讨论了一些开发技巧和注意事项,如数据库连接池的实现、权限验证的拦截器设计、日志模块的异步写入策略等。此外,还涉及到一些优化措施,如懒加载模式的应用和位运算的权限校验方法。
内容概要:本文详细介绍了使用LabVIEW 2018构建一个纯软件波形发生器的方法。该波形发生器能够生成四种基本波形(正弦波、方波、三角波、锯齿波),并通过参数设置进行个性化调整。文中阐述了波形生成的核心算法,如正弦波的正弦函数、方波的占空比控制以及三角波的时间取模运算。此外,还讨论了噪声叠加模块的设计,包括高斯白噪声和均匀白噪声的生成及其与主波形的混合方法。为了提高用户体验,文章还涉及了波形显示的优化措施,如历史数据处理、X轴缩放设置等。最后,作者分享了一些调试经验和性能优化技巧,如参数联动、事件结构的应用等。 适合人群:对LabVIEW有一定了解,希望深入掌握波形发生器设计的工程师和技术爱好者。 使用场景及目标:适用于需要生成精确可控波形的实验环境,如教学演示、科研测试等。主要目标是帮助用户理解和实现波形发生器的关键技术和优化方法。 阅读建议:由于涉及到较多的技术细节和编程技巧,建议读者在阅读过程中结合LabVIEW的实际操作进行练习,以便更好地理解和掌握相关知识点。
内容概要:本文详细介绍了在MATLAB/Simulink环境下,针对微电网储能系统的锂电池SOC均衡问题提出的一种创新性的分段下垂控制策略。传统下垂控制存在收敛速度慢和充放电切换时母线电压波动大的问题。为解决这些问题,作者提出了将下垂曲线分为三个区域的方法:当SOC差超过5%时采用指数型下垂系数,2%-5%间使用二次曲线过渡,小于等于2%则保持线性控制。此外,引入了电压补偿机制以抑制母线电压波动,并通过仿真验证了该方法的有效性。结果显示,新的控制策略显著提高了SOC均衡的速度和平滑度,同时有效减少了母线电压波动。 适用人群:从事电力电子、微电网研究的技术人员以及对储能系统优化感兴趣的科研工作者。 使用场景及目标:适用于需要高效管理锂电池组SOC均衡并确保系统稳定的微电网项目。主要目标是在保证系统稳定性的同时提高SOC均衡效率,减少充放电切换时的电压波动。 其他说明:文中提供了详细的MATLAB/Simulink建模步骤和部分源代码片段,有助于读者理解和复现实验结果。
系统名称:基于SSM健身系统 技术栈:SSM框架、JSP技术、MySQL数据库 系统功能:管理员功能:系统用户信息管理、首页变幻图管理、课程信息管理、健身卡管理、健身器材管理、教练信息管理、购买及报名管理。用户功能:用户注册、健身卡信息查看及在线购买、健身教练信息查看、健身课程信息查看及在线报名、个人后台管理(包括健身卡办理信息管理、健身课程报名信息管理、个人资料维护和管理)。 摘要:随着人们对健康的重视度越来越高,健身经济的不断发展加速推动了健身房的扩张,与此同时多元化和便捷的健身方式也获得越来越多人的青睐,健身房的营销手段也逐渐从现在的宣传彩页推广逐渐转移到了线上平台,人们借助互联网平台实现了健身房健身设施、健身课程、教练信息以及健身卡优惠活动内容的查看和获取,通过线上平台实现了健身卡的办理以及健身课程的预约。相比传统的健身房管理模式,利用系统平台可以为用户提供更加便捷的在线报名及办卡服务,同时也提升健身房办卡及课程预约的管理效率。
MIL-HDBK-344A_NOTICE-2_2012.pdf
卡通铅笔成长乐园儿童教学课件模板
内容概要:本文详细介绍了采用西门子S7-1200 PLC和昆仑通泰触摸屏构建的负压输送与混料配料系统的集成控制方案。主要内容涵盖物料分配逻辑、称重处理、模拟量转换、Modbus通讯、配方管理和变频器控制等方面的技术细节。文中强调了STL编程语言在实时控制中的灵活性和高效性,以及针对具体问题如称重漂移、通讯错误等的实际解决方案。通过优化硬件选型和软件编程技巧,实现了更高的配料精度和系统稳定性。 适用人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉PLC编程和控制系统集成的专业人士。 使用场景及目标:适用于需要精确控制物料输送和混合的工业环境,如化工、食品加工等行业。主要目标是提高生产效率,确保产品质量的一致性和稳定性。 其他说明:文中提供了大量具体的编程实例和调试经验分享,对于理解和掌握类似系统的开发具有重要参考价值。同时提醒读者关注现场实际情况,避免理论与实践脱节。
JEDEC-JESD625C.01.pdf