TypeORMでMySQLで接続する際も、文字コードの指定が可能。むしろ指定しないとutf8mb4ではないので絵文字を保存しようとするとエラーになる。そのため適切に設定しておく必要がある。(TypeORM0.2現在)
設定方法はいくつかあるっぽい。
下記のように接続時のオプションで指定する方法。
const connectionOptions = {
type: 'mysql',
charset: 'utf8mb4'
}
const connection = await createConnection(connectionOptions).catch(error => {
ちなみに、環境設定で設定している場合上記は使えない。かといってTYPEORM_CHARSETがあるのかというと、現時点では存在しない。そのため、この場合は下記のようにして既存の設定をパースして上書きする形で指定することも可能。
const connectionOptions = await getConnectionOptions()
Object.assign(connectionOptions, { charset: 'utf8mb4' })
const connection = await createConnection(connectionOptions).catch(error => {
Entityのソースを見るとcharsetというプロパティがあるのでどうもそれで設定できるっぽい(試してはいない。もしかしたらマイグレーション用だけかも?)
カラムのデコレータのテストを見るとこちらでも設定ができるっぽい(試してはいない。もしかしたらマイグレーション用だけかも?)
@Column({ charset: "utf8" })
title: string;
@Column({ charset: "cp852", collation: "cp852_general_ci" })
description: string;
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント