PrismaでThe provided value for the column is too longというエラーが出た

ORMにPrismaを使っていたら

The provided value for the column is too long

というエラーに遭遇した。

iosのサブスク課金のレシート検証に成功した際recieptを保存するようにしたのだが、このデータの保存のタイミングで起こった。

prisma.schemaは以下の感じ

model Foo {
receipt String
}

なぜ起こったのか

シンプルにデータが大きすぎた。

解決策

model Foo {
receipt String @db.LongText // 追加
}

こうした

MySQLPrismaの復習

MySQLには(というか多くのRDBMSには)保持するデータに型が存在する。VARCHARやINTなど。

指定した型以外のデータを保存しようとするとPrismaがエラーを吐く。

PrismaMySQLを使う場合、単純に String だけだと VARCHAR(191) が指定される。

これでは191文字までに限定される。

MySQLにはLongTextという4294967295バイトまで格納できる型があるので今回はそれをPrismaで指定した。

MySQL database connector (Reference) | Prisma Docs

CloudFunctionsをセットアップしたらParsing error: Cannot read file ~ というエラーが出たので対処した

CloudFucntionsのセットアップでTSを使用するようにしたところ初手で Parsing error: Cannot read file ~ というTSエラーが出た。

どうやらtsconfig.jsonがルートに存在しないからっぽい。確かにfunctions/の中に存在している。

まず command + , で設定を開きメニューバーからJSONファイルを開く。

そこに

"eslint.workingDirectories": ["./functions"]

を追加したら解決した。

Undefined symbol: (extension in UIKit):__C.UIAction.init(title: Swift.String, image: __C.UIImage?, ~ 的なエラーが出た

ReactNativeのリリースビルドでタイトルのようなエラーが出て対処したのでメモ。デバッグビルドでは出なかった。

これはどうやらReactNative0.63.3で発生しているエラーっぽくて、自分もモロ0.63.3を使っていた。

使用しているわけではないが、このgithubに書かれている対処法を参考にした。

PROJECT -> Build settings -> Library Search Pathsの

"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"

の中のswift-5.0を swift-5.3 に変更する。

ただ、たぶんRNのバージョンあげればこれしなくても解決すると思う。

バージョンアップは大事。

module map file '/Build/Products/Release-iphoneos/RNImageColors/RNImageColors.modulemap' not found 的なエラーが出た

ReactNativeのリリースビルド時にタイトルのようなエラーが出た。デバッグの時は出てない。

解決にはこのissueを参考にした。

# エラーが出た時のPodfile
platform :ios, '10.0'
...
# 修正後のPodfile
platform :ios, '9.0'
...

変更後 pod install

これで通ったが、

f:id:ri99:20211128164042p:plain

この画像の通り、自分のDeployment Targetは10なので platform :ios, '10.0' で動かないとおかしい、、

なのでもう一度キャッシュを削除して pod install してビルドしたら通った。

最初エラーが出た時もキャッシュは削除したからキャッシュが問題だったわけではなさそう。

ちょっと前にflipperを有効にするために少しPodfileやら設定をいじったりしたのでそこに原因があるかもしれない。要調査。

Multiple commands produce react-native-vector-icons/Fonts/AntDesign.ttf' ~ script phase “[CP] Copy Pods Resources”的なエラーが出た。

ReactNativeでタイトルのようなエラーが出たのを対処したのでメモ。

TARGETS -> Build Phases -> Copy Bundle Resorcesからエラー出てるファイルを全て - で削除する。

ReactNativeでFlipperを使おうとしたら 'event2/event-config.h' file not foundが出た

今までPodfileでflipperを無効にしていたのだが、使ってみたかったので有効にしたら'event2/event-config.h' file not foundというエラーが出たので対処法をメモ。

ReactNativeのバージョンは(古めだけど)0.63。

# エラーが出た時のPodfileのflipperの部分
use_flipper!()

このissueでは「Flipper-Follyのバージョンがアップデートされたから修正してね」とあるのでそれが理由なのかもしれない。

use_flipper!({ 'Flipper-Folly' => '2.3.0' })

use_flipper!({ 'Flipper' => '0.95.1', 'Flipper-Folly' => '2.6.7', 'Flipper-RSocket' => '1.4.3' })
にする案もあるが、ここで書かれているように

use_flipper!({ 'Flipper' => '0.122.0' })

に変えて、pod install --repo-update をしたら解決した。

react-native-webviewでGoogleMapを表示する

ReactNativeでwebのGoogleMapを使う必要があったのでそのメモ。

セットアップ

yarn add react-native-webview
cd ios
pod install
// android/gradle.propertiesに以下2行追加
android.useAndroidX=true
android.enableJetifier=true

使用

<WebView
    source={{
      html: `<iframe src="<url>" width="100%" height="100%"></iframe>`,
     }}
/>

iframeを使う必要があったので

source={{uri: ""}}

ではなく、htmlを返すようにする。