diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue
index bc2a5fba85..cca4e5f669 100644
--- a/src/client/app/admin/views/instance.vue
+++ b/src/client/app/admin/views/instance.vue
@@ -195,7 +195,7 @@ export default Vue.extend({
 	},
 
 	created() {
-		this.$root.getMeta().then(meta => {
+		this.$root.getMeta(true).then(meta => {
 			this.maintainerName = meta.maintainerName;
 			this.maintainerEmail = meta.maintainerEmail;
 			this.disableRegistration = meta.disableRegistration;
diff --git a/src/misc/fetch-meta.ts b/src/misc/fetch-meta.ts
index a459f07729..800f0b9e63 100644
--- a/src/misc/fetch-meta.ts
+++ b/src/misc/fetch-meta.ts
@@ -1,13 +1,21 @@
 import { Meta } from '../models/entities/meta';
-import { Metas } from '../models';
+import { getConnection } from 'typeorm';
 
 export default async function(): Promise<Meta> {
-	const meta = await Metas.findOne();
-	if (meta) {
-		return meta;
-	} else {
-		return Metas.save({
-			id: 'x'
-		} as Meta);
-	}
+	return await getConnection().transaction(async transactionalEntityManager => {
+		// バグでレコードが複数出来てしまっている可能性があるので新しいIDを優先する
+		const meta = await transactionalEntityManager.findOne(Meta, {
+			order: {
+				id: 'DESC'
+			}
+		});
+
+		if (meta) {
+			return meta;
+		} else {
+			return await transactionalEntityManager.save(Meta, {
+				id: 'x'
+			}) as Meta;
+		}
+	});
 }
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index e242ac71a1..3c6380acb4 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -1,6 +1,6 @@
 import $ from 'cafy';
 import define from '../../define';
-import { Metas } from '../../../../models';
+import { getConnection } from 'typeorm';
 import { Meta } from '../../../../models/entities/meta';
 
 export const meta = {
@@ -505,11 +505,17 @@ export default define(meta, async (ps) => {
 		set.swPrivateKey = ps.swPrivateKey;
 	}
 
-	const meta = await Metas.findOne();
+	await getConnection().transaction(async transactionalEntityManager => {
+		const meta = await transactionalEntityManager.findOne(Meta, {
+			order: {
+				id: 'DESC'
+			}
+		});
 
-	if (meta) {
-		await Metas.update(meta.id, set);
-	} else {
-		await Metas.save(set);
-	}
+		if (meta) {
+			await transactionalEntityManager.update(Meta, meta.id, set);
+		} else {
+			await transactionalEntityManager.save(Meta, set);
+		}
+	});
 });