我使用Flyway管理IBM dashDB上的数据库迁移。该数据库默认组织表格内容'按列#,特别是使"schema_version"
表的创建失败。
为了使它工作,表创建SQL语句应该只包含"ORGANIZE BY ROW"
指令:
CREATE TABLE (...)
(...)
) ORGANIZE BY ROW
处理此问题的最佳方法是什么?我正在寻找一种不会影响默认表组织的解决方案。 谢谢你的帮助, 欢呼声。
答案 0 :(得分:0)
如果您只想将某个特定的表从有条理的列更改为有组织的行,那么就需要一个" ORGANIZE BY ROW"在表定义上将是推荐的方法来解决这个问题。 (这似乎是你正在做的事情)
更改默认表格组织将改变表格在未放置" ORGANIZE BY"在你的表ddl。
如果您对dashDB实例拥有管理员权限,则可以通过'运行SQL'更改默认表格组织。在dashDB控制台中或使用dashDB客户端。 (例如:clp / clpplus)
将默认表格组织设置为ROW:
call ADMIN_CMD('UPDATE DB CFG USING DFT_TABLE_ORG ROW');
将默认表格组织设置为COLUMN :(默认dashDB配置)
call ADMIN_CMD('UPDATE DB CFG USING DFT_TABLE_ORG COLUMN');
分析将使用列组织表更好地执行,因此建议将大多数表作为列组织。
答案 1 :(得分:0)
dashDB将表现最佳。当你开始混合基于行和列的表时,许多操作然后在“补偿”中执行,这基本上意味着它们不会充分利用柱状引擎。
目前存在一些兼容性原因导致无法创建列表,因此必须使用基于行的表,但是原始的DDL也没有出现错误,所以在这种情况下我无法分辨。如果您可以提供完整的CREATE TABLE语句和产生的错误(如果有的话),我可以提供一个替代解决方案,允许您仍然使用所有基于列的表。