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

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

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

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

JSON

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

1378閲覧

SQLSTATE[HY000]: General error: 2036 と出てデータを読み込めない。

scrollman

総合スコア83

MySQL

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

JSON

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

1クリップ

投稿2020/05/09 12:13

編集2020/05/09 12:25

開発環境の内容をXserverのステージ環境にデプロイして、composer install ,php artisan migrateをした後の事です。

サイトを見ると、Ajaxで読み込んで表示されるはずのものが表示されません。

ブラウザの開発モードのコンソールには
[HTTP/2 500 Internal Server Error ]
とあります。
応答の部分を見ると、
message "Server Error"

…これじゃなんも分からんぞと思いログを見てみると、

log

1SQLSTATE[HY000]: General error: 2036 (SQL: select * from `orders` where `user_id` = hogehogehoge) {"userId":"hogehogehoge","exception":"[object] (Illuminate\Database\QueryException(code: HY000): SQLSTATE[HY000]: General error: 2036 (SQL: select * from `orders` where `user_id` = hogehogehoge) at /home/hogehogehoge/hogehogehoge.work/public_html/test/cloud-supple/vendor/laravel/framework/src/Illuminate/Database/Connection.php:671

おまけにphpMyAdminでordersテーブルを見ると、

log

1Notice in ./libraries/dbi/DBIMysqli.class.php#523 2Undefined offset: 245 3 4Backtrace 5 6./libraries/DatabaseInterface.class.php#2731: PMA_DBI_Mysqli->getFieldsMeta(object) 7./libraries/sql.lib.php#1927: PMA_DatabaseInterface->getFieldsMeta(object) 8./libraries/sql.lib.php#2245: PMA_getQueryResponseForResultsReturned( 9object, 10array, 11string 'hogehoge', 12string 'orders', 13NULL, 14NULL, 15object, 16string './themes/original/img/', 17string '1', 18integer 1, 19string 'SELECT * FROM `orders` LIMIT 0, 25 ', 20NULL, 21NULL, 22NULL, 23NULL, 24NULL, 25string 'SELECT * FROM `orders`', 26NULL, 27) 28./libraries/sql.lib.php#2125: PMA_executeQueryAndGetQueryResponse( 29array, 30boolean true, 31string 'hogehoge', 32string 'orders', 33NULL, 34NULL, 35NULL, 36boolean false, 37NULL, 38NULL, 39NULL, 40string '', 41string './themes/original/img/', 42NULL, 43NULL, 44NULL, 45string 'SELECT * FROM `orders`', 46NULL, 47NULL, 48) 49./sql.php#201: PMA_executeQueryAndSendQueryResponse( 50array, 51boolean true, 52string 'hogehoge', 53string 'orders', 54NULL, 55NULL, 56NULL, 57boolean false, 58NULL, 59NULL, 60NULL, 61string '', 62string './themes/original/img/', 63NULL, 64NULL, 65NULL, 66string 'SELECT * FROM `orders`', 67NULL, 68NULL, 69)

※hogehoge部分はDB名です。

何やら不穏なログが表示されています。

確認したところ、読み込めないのはこのordersテーブルだけのようです。ordersテーブルは他の読み込めたテーブルと違ってjson型があります。

そういえば、ローカル開発環境のMySQLは

Server: MySQL Community Server - GPL
Version: 8.0.16

なのに、

XserverのMySQLは

SSHでmysql --versionを打ってみると、
mysql Ver 15.1 Distrib 5.5.64-MariaDB, for Linux (x86_64) using readline 5.1

と出て(関係ないかも)、

Xserverのホームページ上ではMySQL 5.7です。

関係ないかもですが、PHPのバージョンは開発環境が
PHP 7.3.0 (cli) (built: Dec 6 2018 02:17:00) ( ZTS MSVC15 (Visual C++ 2017) x86 )
でXserverが
PHP 7.3.14 (cli) (built: Jan 25 2020 00:32:14) ( NTS )
です。

「あ、これは失態かな?」と思いましたが、諦めたくありません。

上記のエラーで調べてみると似たような状況にある方を見つけました。
https://teratail.com/questions/155998

ここのベストアンサーに、

PHP本体にバンドルされている libmysqlclient のバグらしいです。 mysqlnd に切り替えてみてください。

とあります。なるほど、よくわからないけどmysqlndじゃないのか、と思いmysqlndかどうか調べてみました。

https://teratail.com/questions/29361
ここを参考にして

phpinfo()
をSSHで打ってみますと…何も表示されません。

改めてここを参考に、
https://cloudpack.media/17220

php -m | grep mysqlnd

と打ってみると…何も出てきません。

mysqlnd # 出て来ればOK、とありますが、出てきません。

逆にローカル開発環境で打つとちゃんと出てきます。

これは、mysqlndがないのが原因だと思いました。

さて、
https://teratail.com/questions/155998
の方はmysqlを外部に用意して解決したようです。

私も同じ方法でやろうと思いました。

mysql8の使えそうなレンタルサーバーを探していたら、偶然無料のmysqlホスティングサービスを見つけました。

https://www.db4free.net/

https://www.mpopp.net/2018/04/db4free-net-goes-mysql-8-0/
によれば
mysql8を使っているそうです。

ここでテストしてみようと思い、ここのアカウントを取得し接続し、、php artisan migrateし、必要なテーブルデータをxserverからインポートして、サイトを確認しました。

しかし、出てくるエラーの内容はかわりませんでした。

ログインやデータの読み込みがかなり遅かったので、そちらに起因するものかもしれません。

AmazonRDSなどで外部にmysqlを用意しようと考えておりましたが、

mysplndとは?、これはmysqlが原因なのか、それ以外が原因なのか、よくわからなくなってきました。

どなたかお助けください。


Laravelのバージョンは
Laravel Framework 7.10.2
です。


xserverだけで完結すればそれに越した事はありませんが、無理そうであればAmazonRDS等のサービスを活用したいです。AmazonRDSはmysql8に対応しているらしいですが、AmazonRDSを利用することで問題が解決しそうか、教えてください。

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

https://qiita.com/hondy12345/items/4ebf7130bef833d0a3ea

これやったらいけました。

世の中よくわかりませんね。

投稿2020/05/09 16:51

scrollman

総合スコア83

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問