我在开发范围内使用postgresql,它有函数调用" uuid_generate_v4()" 在测试范围中,我使用sqlite3但是迁移代码不起作用,因为缺少" uuid_generate_v4()"。 我可以重新解决这个问题吗?
<batch:job id="couponToggleActivation" job-repository="jobRepository">
<batch:step id="couponActivation">
<batch:tasklet ref="couponToggleActivation">
</batch:tasklet>
</batch:step>
</batch:job>
&#34;如果不存在则创建表&#34;通知&#34; (&#34; id&#34; char(36)默认为uuid_generate_v4(),&#34; created_at&#34; datetime,&#34; updated_at&#34; datetime,&#34; type&#34; varchar(255) ,&#34;摘要&#34; varchar(255),&#34; text&#34; varchar(255),&#34; actionText&#34; varchar(255),&#34; actionUrl&#34; varchar( 255),&#34;收件人&#34; char(36),外键(&#34;收件人&#34;)引用&#34;用户&#34;(&#34; id&#34;),主键(&#34; id&#34;)) - SQLITE_ERROR:near&#34;(&#34 ;:语法错误&#34;
答案 0 :(得分:0)
由于@ mu-is-too-short评论,无论如何我都不建议这样做,但这是如何做到的:
let uuidGenerationRaw = connection.client.config.client === 'sqlite3' ?
`(lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6))))` :
`uuid_generate_v4()`;
connection.schema.createTableIfNotExists('notification', (table) => {
table.uuid('id').primary().defaultTo(connection.raw(uuidGenerationRaw));
// ... rest of the columns
}),