lealone / Lealone

比 MySQL 和 MongoDB 快10倍的 OLTP 关系数据库和文档数据库
Other
2.44k stars 514 forks source link

lealone数据库插入数据错误汇总 #230

Open tangzhongshan opened 1 month ago

tangzhongshan commented 1 month ago

lealone数据库插入数据错误汇总

image

insert into sys_job values(2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')', '0/15 ?', '3', '1', '1', 'admin', sysdate(), '', null, ''); 还有像这种需要存''符号的也报错

image

image

codefollower commented 1 month ago

在一对单引号中的字符串可以直接包含双引号,比如 'abc"123' 是合法的, 如果要在字符串中又包含单引号,只要连着用两个单引号表示就可以了,比如 'abc''123' 就是 abc‘123

codefollower commented 1 month ago

中文是支持的,那个包含温馨提醒的完整字段内容你贴出来一份我试试。

tangzhongshan commented 1 month ago

-- 17、通知公告表


drop table if exists sys_notice; create table sys_notice comment is '通知公告表'( notice_id int(4) not null auto_increment comment '公告ID', notice_title varchar(200) not null comment '公告标题', notice_type char(1) not null comment '公告类型(1通知 2公告)', notice_content varchar(2000) default null comment '公告内容', status char(1) default '0' comment '公告状态(0正常 1关闭)', create_by varchar(64) default '' comment '创建者', create_time datetime comment '创建时间', update_by varchar(64) default '' comment '更新者', update_time datetime comment '更新时间', remark varchar(255) default null comment '备注', primary key (notice_id) ); -- lealone的blob字段和mysql的blob字段有点区别,这里改成varchar类型了

blob字段改成varchar类型插入数据没有问题


-- 初始化-公告信息表数据


insert into sys_notice values('1', '温馨提醒:2018-07-01 若依新版本发布啦', '2', '新版本内容', '0', 'admin', sysdate(), '', null, '管理员'); insert into sys_notice values('2', '维护通知:2018-07-01 若依系统凌晨维护', '1', '维护内容', '0', 'admin', sysdate(), '', null, '管理员');

tangzhongshan commented 1 month ago

notice_content从blob字段改成varchar类型插入数据没有问题

codefollower commented 1 month ago

notice_content从blob字段改成varchar类型插入数据没有问题

是的,字符串直接存 blob 会假定它是16进制的字符串,所以解析时会出现16进制编码错误,改成 clob 或 varchar 即可。

tangzhongshan commented 1 month ago

mysql导出的表结构包含[ DEFAULT current_timestamp() ON UPDATE current_timestamp(),],需要手动删除,才能继续执行

image

还有mysql导出表结构包含[ENGINE=MyISAM],也不能创建成功,需要手动删除 image

tangzhongshan commented 1 month ago

还有mysql插入数据的时候,默认timestap值可以为[0000-00-00 00:00:00],从mysqldump导出的数据也包含这些默认值,插入到lealone数据库的时候报错,需要手动更改[0000-00-00 00:00:00]为[1900-01-01 00:00:00]就是一个真实的日期才行,修改完后lealone数据库能插入

codefollower commented 1 month ago

@tangzhongshan 感谢报告问题,要想兼容好 mysql 确实还有很多细节工作需要做,每个数据库的细节还是有很多差异的。