開発環境の内容を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.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を利用することで問題が解決しそうか、教えてください。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。