pg数据库同步错误

Viewed 39

image.png
image.png
1、字段类型识别错误,无法与数据库对应
2、主键默认值解析错误,少一个‘)’

1 Answers

1.boolean类型解析错误,可以修改下基本数据类型
f8628a8d-9718-44f9-9b52-d8e79b17f190.png

2.主键默认值解析(主键默认值应该是系统内置,不建议解析,解析后生成的SQL也无法执行),可以修改下解析模板,去掉该默认值

参考下图,将里面的内容替换掉

image.png

SELECT
    col.table_schema as schema_name,
    col.TABLE_NAME AS tbl_def_key,
    col.ordinal_position AS order_value,
    col.COLUMN_NAME AS def_key,
    d.description AS def_name,
		'' AS intro,
    col.udt_name AS db_data_type,
		CASE WHEN col.character_maximum_length IS NULL AND col.numeric_precision IS NOT NULL THEN col.numeric_precision
		     ELSE col.character_maximum_length
		END AS data_len,
		CASE WHEN col.numeric_precision IS NOT NULL THEN (CASE WHEN col.numeric_scale = 0 THEN NULL ELSE col.numeric_scale END)
				ELSE NULL
		END AS num_scale,
    CASE WHEN kc.column_name IS NOT NULL THEN 1 ELSE 0 END AS primary_key,
    CASE WHEN col.IS_NULLABLE = 'NO' THEN 1 ELSE 0 END AS not_null,
    CASE WHEN col.COLUMN_DEFAULT LIKE 'nextval%' THEN 1 ELSE 0 END AS auto_increment,
    CASE
        WHEN kc.column_name IS NULL THEN col.column_default
        ELSE NULL
    END AS default_value
	
FROM
    information_schema.COLUMNS col LEFT JOIN (information_schema.key_column_usage kc LEFT JOIN information_schema.table_constraints tc
																								ON
																											kc.constraint_name = tc.constraint_name
																									and tc.constraint_type = 'PRIMARY KEY'
																									and kc.table_schema=tc.table_schema
																									and kc.table_name=tc.table_schema
																					) ON
																								col.TABLE_NAME = kc.table_name
																						AND col.COLUMN_NAME = kc.column_name  AND kc.table_schema = col.table_schema
LEFT JOIN pg_class C ON C.relname = col.TABLE_NAME
LEFT JOIN pg_namespace n ON col.table_schema = n.nspname AND c.relnamespace = n.oid
LEFT JOIN pg_description d ON d.objoid = C.oid AND d.objsubid = col.ordinal_position
WHERE
    col.table_schema IN (:schemaName)
    AND nspName IN (:schemaName)
    AND CONCAT(col.table_schema, '.', col.TABLE_NAME) IN (:sysTableNames)
ORDER BY
	col.table_schema asc, col.TABLE_NAME asc,col.ordinal_position ASC