mysql数据库迁移到瀚高数据库,包含数据迁移、sql语法、服务启动、部署、tomcat问题整理

1.数据库迁移

我目前使用的是5.6.5版本瀚高数据库
关于瀚高数据库的数据迁移,我目前只找到了两个方案,
1.只能用专门的迁移工具,csdn中50c币的那个,该工具可以实现其他数据库(这个其他不包含瀚高自己)迁移到瀚高数据库
2.瀚高数据库自带的迁移工具,从oracle迁移到瀚高(可能有其他的,我可能没发现?)

2022/4/24原帖更新插入新方法
经过一番搜索,发现了新的方式,即为数据库备份 数据库恢复

2.数据库设置主键自增

数据库迁移之后,需要加主键自增,因为瀚高数据库不像mysql数据库的navcat一样点一下就自增了

(68条消息) postgresql常用函数>序列函数nextval():设置主键自动增长_野生汪嘤嘤嘤的博客-CSDN博客_default nextval

CREATE SEQUENCE 表名_主键_seq 
    START WITH 1    --1为起始id
    INCREMENT BY 1  --每次自增
    NO MINVALUE 
    NO MAXVALUE 
    CACHE 1; 
alter table 表名 alter column id set default nextval('表名_主键_seq'); 

//数据库设置修改主键起始值:
alter sequence if exists 表名_主键_seq restart with 3  cache 1;

2.1 数据库字段问题

有些超级大的数字必须在sql语句中转为bigint
(69条消息) sum(CHARACTER VARYING) 不是唯一的_麻花2013的博客-CSDN博客

非mysql数据库的一些问题

sum(cast(字段名 as int))

2.2 存在即更新

某个sql语法,在瀚高中的修改

1、如果数据库存在一条记录,则将新插入的值,作为更新

2、如果没有这样一条记录,则新增。

(70条消息) PostgreSQL数据库如果不存在则插入,存在则更新_旷野孤星的博客-CSDN博客_pgsql 存在则更新

INSERT INTO test_postgre(id,name,InputTime,age)
VALUES('1','postgre','2018-01-10 22:00:00',24)
ON conflict(id) 
DO UPDATE SET name = 'postgreOk', InputTime ='2018-02-22 12:00:00'

2.3 清空数据表

在 mysql中,只需要执行:

TRUNCATE table_name;

即可,数据会情况,而且自增id也会变回0;

但在 postgresql 则稍有不同,因为 postgresql 的自增id是通过序列 sequence来完成的,

所以情况数据后,还需要还原序列 sequence:

TRUNCATE bigtable, fattable RESTART IDENTITY;

2.4 瀚高数据库查询过程中显示转换

一个莫名其妙的错误

SELECT person.name, holidays.num_weeks FROM person, holidays 

WHERE person.current_mood = holidays.happiness; 

ERROR:operator does not exist: mood = happiness 

如果真的需要那么做,可以要么自定义运算符,要么为查询添加显式转换:

SELECT person.name,holidays.num_weeks FROM person,holidays 

WHERE person.current_mood::text=holidays.happiness::text;

2.5 mybatis插入一条数据返回自增的主键值

mybatis插入一条数据返回自增的主键值_smile-yan的博客-CSDN博客_mybatisplus插入一条数据返回主键

<insert id="addTaskLogs" parameterType="com.taiyu.dms.entity.TaskLog" useGeneratedKeys="true"   keyProperty="id" keyColumn="id">
    insert into taskLog(taskName,taskType,taskCycle,startTime,mxTable) values(#{taskname},#{tasktype},#{taskcycle},#{starttime},#{mxtable})

  </insert>

七种MYSQL插入数据后返回自增主键ID的方法_童话ing的博客-CSDN博客_mysql 插入返回主键.

2.6 瀚高数据库服务无法启动

这个解决方案好像是有一个人的综合方案

瀚高数据库win版启动客户端连接提示拒绝连接,是否在主机xxx运行且准备接受在端口5866_星月情缘02的博客-CSDN博客_瀚高数据库启动不了

3. 部署

我们对于部署的操作是 打war包 放在tomcat的webapps下

前端是vue项目 也放在webapps下

vue项目中需要写一个config.js (里边只有这一句话)

window_global_config = {
    
    
	baseURL:'http://后端ip地址:后端端口号/后端项目名'
}

ip地址为后端服务器地址/后端本机地址

端口号(此处对应的是项目的端口号–在项目的application.properties中配置的端口号)

后端项目名为你放在webapp下的war包名(这个名是在resources下的配置文件中定义的)

放完之后

在bin目录中 启动startup.bat

4. tomcat出问题

tomcat路径下 logs文件夹 找出时间最近的日志,拉到最下查看问题

常见错误

password authentication failed for user "highgo"  --连接数据库的密码错误
relation "表" does not exist
这个错误可以由多种因素引起
    1.权限什么的————查阅后……我没看懂,
    2.瀚高数据库的库名问题————我把我的库名改成highgo,解决了

出现过c3p0错误

原因是我写的某个定时器引用了低版本的c3p0 但我为了连接瀚高使用了高版本的c3p0

最后解决方案是在定时器中的依赖中排除低版本的

不过我觉得关于这个问题的找出的方式很值得学习
发现错误的方式是,
1.tomcat报错看tomcat logs ,
2.maven清空重新导包,发现下载了两个包,
3.拆war包,war包中有俩c3p0,
4.尝试在项目中找低版本的c3p0的来源(找不到)
5.看依赖树,发现定时器的某个依赖引用了低版本c3p0依赖,
6.尝试只用低版本的c3p0能否运行(并不能),
7.使用语法排除低版本,只用高版本(√)

(这个错误找大佬查,查了1个多小时,一直到自己手动把war包拆开,挨个看依赖这才发现问题)-----这个错误找的是最累的,每次尝试都要重新清缓存,打包,部署,启动,再测试

5. 2022/4/24

5.1 数据库备份

在C:\highgo\database\5.6.5\bin下进入cmd

-h localhost 本地数据库地址

-p 5866 端口号

-U highgo 用户(瀚高数据库用户,密码)

-d highgo 瀚高中的数据库名字

-n baozhen 瀚高中的数据库的模式名

testdb20220424.hgdmp 数据库的备份的储存的sql类型的文件名

pg_dump -h localhost -p 5866 -U highgo -d highgo -n baozhen -v -Fc > testdb20220424.hgdmp

运行后的数据储存在bin目录下

5.2 数据库恢复

将文件拖进服务器或者部署的机器中

pg_restore -h 127.0.0.1 -p 5866 -U highgo -d highgo -v testdb20220424.hgdmp

注意:该方法未测试,不过感觉没太大问题

猜你喜欢

转载自blog.csdn.net/m0_54765221/article/details/124324014