質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

解決済

1回答

721閲覧

MySQL Workbenchでカラムの型をJSONに変更しようとするとエラーが出る

mi_ho

総合スコア34

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

0クリップ

投稿2023/08/05 04:19

編集2023/08/05 04:42

実現したいこと

MySQL Workbenchで、既存のテーブルのカラムの型をJSONに変更しようとするとエラーが出ます。

MySQL

1ALTER TABLE `テーブル名` 2CHANGE COLUMN `カラム名` `カラム名` JSON NULL DEFAULT NULL

エラーメッセージ

Error: There was an error while applying the SQL script to the database. Operation failed: There was an error while applying the SQL script to the database. ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JSON NULL DEFAULT NULL' at line 2

'JSON NULL DEFAULT NULL'付近にシンタックスの間違いがあると言われています。
'JSON NOT NULL'も試してみましたが、同様のエラーが出ました。

INTやTEXTへの型変更は問題なくできました。JSONへの変更時のみエラーが出ます。
考えられる原因として何があるでしょうか。ご教授お願いいたします。

前提

MySQLのバージョン:8.0.34

追記

ご指摘いただいたので調査、試したことを以下に追記していきます

MySQL5.7.8以降でないとJSONがサポートされていないという情報があったのでバージョンを確認したが、8.0.34だったのでバージョンは問題なさそうでした。
テーブル名に-(ハイフン)が含まれる場合エラーになるということでしたが、テーブル名にハイフンはついていません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

neko_the_shadow

2023/08/05 05:35

以下のSQLを試してみましたが、問題なく動いていそうでした。データ型もJSONに変換できていることが確認できました。 CREATE TABLE `テーブル名` (`カラム名` CHAR(1)); ALTER TABLE `テーブル名` CHANGE COLUMN `カラム名` `カラム名` JSON NULL DEFAULT NULL; ①全角空白が混じっている、;が抜けているなどはないでしょうか? ②実際に発行したALTER TABLE文やCREATE TABLE文は提示できますか? 不可能であれば問題が再現するようなALTER TABLE文・CREATE TABLE文を提示することはできますか?
mi_ho

2023/08/05 05:37

入れ違いになってしまいました。申し訳ありません…。 herokuのアドオンであるClearDB依存でMySQLのバージョンが制限されていたことがわかり、自己解決に書かせていただきました。
guest

回答1

0

自己解決

herokuのClearDBというアドオンでMySQLデータベースを使っていたのですが、このClearDBのデフォルトのバージョンが5.6だったようです。
私が確認したのは、自分のMySQL WorkbenchのデフォルトのMySQLnoバージョンでしたが、ClearDBを使用したデータベースでは自動的にバージョンが5.6になってしまうようです。
そして、無料のClearDBではMySQLのバージョンがあげられないようです。

ほかのherokuユーザーの方がClearDBの代替としておすすめしてくださっていたJawsDBというアドオンに変更したところ、MySQLの使用バージョンが8.0.28になり、問題なくJSON型を使えました。
確認不足で失礼いたしました。

参考:
HerokuでMySQLを使うならJawsDBにしよう
herokuでMySQL5.7以降を使うためにClearDBからJawsDBに変更する

投稿2023/08/05 05:31

mi_ho

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問