「cake bake all でテーブル名エラー」 – cakePHPって規約がうるさいのね。

最初に CakePHP の cake bake all を使って Model/View/Controller を一気に作成したところ、

データベースでのCakePHP の複数形にひっかかって負のスパイラルに陥りました。

今後、苦しまないようにメモいたします

C:\workspace\cakePhpBakeSample>.\app\Console\cake bake all

Welcome to CakePHP v2.5.9 Console
---------------------------------------------------------------
App : app
Path: C:\workspace\cakePhpBakeSample\app\
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
Possible Models based on your current database:
1. SyohinMaster
Enter a number from the list above,
type in the name of another model, or 'q' to exit
[q] > 1
Error: Table syohin_masters for model SyohinMaster was not found in datasource d
efault.
#0 C:\workspace\cakePhpBakeSample\lib\Cake\Model\Model.php(3572): Model->setSour
ce('syohin_masters')
#1 C:\workspace\cakePhpBakeSample\lib\Cake\Model\Model.php(1368): Model->getData
Source()
#2 C:\workspace\cakePhpBakeSample\lib\Cake\Console\Command\Task\ModelTask.php(52
4): Model->schema(true)
#3 C:\workspace\cakePhpBakeSample\lib\Cake\Console\Command\Task\ModelTask.php(82
2): ModelTask->doAssociations(Object(Model))
#4 C:\workspace\cakePhpBakeSample\lib\Cake\Console\Command\BakeShell.php(174): M
odelTask->bake(Object(Model), false)
#5 C:\workspace\cakePhpBakeSample\lib\Cake\Console\Shell.php(437): BakeShell->al
l()
#6 C:\workspace\cakePhpBakeSample\lib\Cake\Console\ShellDispatcher.php(209): She
ll->runCommand('all', Array)
#7 C:\workspace\cakePhpBakeSample\lib\Cake\Console\ShellDispatcher.php(66): Shel
lDispatcher->dispatch()
#8 C:\workspace\cakePhpBakeSample\app\Console\cake.php(47): ShellDispatcher::run
(Array)
#9 {main}

既存のテーブル名は”syohin_master” なのに何で最後に勝手にsがつけられてエラーなの?

テーブル名をrename するとエラーが解消できました。

cakePHPでの規約ではないでしょうか?

調査せねば・・・

次回へつづく。

テーブル名変更(ALTER TABLE — RENAME—)

テーブル名の変更方法を確認します。書式は次の通りです。

ALTER TABLE 現テーブル名 RENAME [TO] 新テーブル名;

現テーブル名で指定したテーブルの名前を新テーブル名に変更します。

例えば次のように使います。

alter table syouhinMaster rename to syouhinMasters;

 

上記の場合、syouhinMaster テーブルの名前をsyouhinMastersに変更します。

sを付けるの忘れたもので。

公開用wordpressサーバ買い替え

ヤフーオークションで i5M560 のTOSHIBAノートブックが

7,000円で出品されていたので粘って落札。

前のノートブックは息子が使っていたもので遅くていらいらしていた。

奮発してメモリも3500円で8GBへ増設。

このマシンで公開しております。

ディスクトップより省エネで、開発マシンの代用もできる点より思い切って!

こずかい少ない小生は、思い切っての金額なのです。

ただし、キーボードは磨り減って文字が見えないから安かったのです。

今は快適生活です。

wordpressいろいろ試していきます。

2016-11-19-10-30-59
https://gyazo.com/0efd0156835b2f4b079c0dbdbea048d8

ローカルに保存しないハードコピーツールGyazo

とっても便利なツールです。

ハードコピーはサーバへ格納されます。

要領は無制限です。

ブログにアップする画像はインターネットへ公開するものであるので

別に流出してよいものです。

セキュリティに不安な方は、社内のマニュアル用の画像などはアップしないほうがよいとは思いますが。

けど、自宅サーバを公開している私にはうれしいツールです。

ぜひ、使ってみて判断してください。

 

1.インストール方法

https://gyazo.com/download?lang=ja

ここにダウンロード元とインストール方法がかかれてますので、これにそって行ってください。

かんたんですよ。

2.使い方

%e6%96%b0%e3%81%97%e3%81%84%e3%83%93%e3%83%83%e3%83%88%e3%83%9e%e3%83%83%e3%83%97-%e3%82%a4%e3%83%a1%e3%83%bc%e3%82%b8

常駐しているGyazoをクリックすると + が表示されるのでハードコピー範囲を選択します。

自動的に下記URLが表示されます。

https://gyazo.com/ffc66328ea1228cea50b4a4d3c56c689

シェアボタンでHTMLクリックでタグをコピーできます。

wordPress(テキストモード)やブログにはHTMLのaタグで追加されます。

https://gyazo.com/5dc1978b7e7a3ac7003d901612663192

画像を削除しない限り、全ての画像は半永久的にGyazoのサーバー上に保存されるそうです。

「無料版では画像リストからのアクセスに制限があります。」とかかれてますがこれは

1ケ月以上前は一覧確認できないようです。

過去画像をコメントつけたりの編集ができなくなります。
https://gyazo.com/6c484c9505661768985a124c6b32ba22

是非、つかってみてください。便利ですよ。

PHPのArray(配列)メソッド・使い方まとめ

参考になりますのでリンクしておきます

侍エンジニア塾さんへのリンクです。

※実は私が書いた記事が採用されちゃいました。(^◇^)


http://www.sejuku.net/blog/11981


すっごい参考になります。

内容は下記のなります

プログラミング言語って何から勉強すればいいの?

仕事がらよく「プログラミング勉強したいけど、どの言語がいいっちゃね?」と質問が来ます。

ピュアなオブジェクト指向を勉強して頂きたい場合は、オブジェクト指向のさきがけのsmalltalk と言っておりますが

実務は皆無であり、これはあくまで教育用言語です。

「やっぱりJavaかな。」と答えますが、Javaは企業の基幹業務や大規模なシステム向きです。

フリーランスでの受託となると、WEBサイト制作や、SNSやECサイト開発などの

Web開発での言語は、敷居の低く、比較的簡単に開発できるPHPかRubyがほとんどであることが実態です。

しかし言語の基礎力を付ける意味で手始めはJava言語のオブジェクト指向とJava8のmap,Reduce、ラムダ式までしっかりと覚えてから → PHPという流れがベストだよと言うようにしております。

ググってると私の意見を代弁してくれている記事を見つけましたので紹介いたします。

理由を明確に教えてくれてます。作者の井上 慎也さんは尊敬に値します。

是非、一読されることをお勧めいたします。

侍エンジニア Online さんの記事です

 

wordpress 停止手順(CentOSの場合)

前回、Linux(CentOS)を一気にシャットダウンしたので

wp_optionsが破損したのではと推測される。

 

かならず

httpdを停止後に受け付けられなくする

Mysqlを停止してください。

[root@localhost Backup]# service httpd stop
httpd を停止中:                                            [  OK  ]
[root@localhost Backup]# service mysqld stop
mysqld を停止中:                                           [  OK  ]
[root@localhost Backup]#

壊れる心配が少なりましたが、

自動で動かしたところです。

wordPressの更新を押したら動かなくなった( ゚Д゚)

管理画面の「ダッシュボード」-「更新」が赤くなったので

バージョン 4.6.1–ja  を再インストールしたところ

プラグイン 追加ができなくなりました。

 

画面上部に

”warning: 予期しないエラーが発生しました。WordPress.org かこのサーバーの設定に何か問題があるかもしれません。問題が続くようであれば、サポートフォーラムを参照してみてください。 (WordPress は WordPress.org との安全な接続を確立できませんでした。サーバー管理者にご連絡ください) in /var/www/wordpress/wp-admin/includes/plugin-install.php on line 158”

が出力されてプラグインなど一部機能が使えなくなりました。

 

ここでも (;´・ω・)草 (;´・ω・)草 大量の汗が。。。

 

原因は

強制的にhttps(SSL)接続に変換しているコードにより発生してた

 

PHPソースが置き換わったために https 対応が標準のようです。

 

udpate.phpのコード変更方法

以下にSSL接続に強制的に変換しているコードを実行している「update.php」ファイルの変更方法を記載します。

  1. WordPressをインストールしたフォルダ配下のwp-includesフォルダにある「update.php」ファイルをテキストエディタで開く。 私はViで変更しました。
  2. 以下の3行を見つけてコメントアウト(行頭に//を付加)する。
    ※同様の行が3箇所あるのですべて同様に変更する。
    [変更前]

    104 if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
    105     $url = set_url_scheme( $url, 'https' );

    [変更後]

    104 //  if ( $ssl = wp_http_supports( array( 'ssl' ) ) )
    105 //      $url = set_url_scheme( $url, 'https' );

以上でコードの変更作業は終了です。

 

無事エラーはなくなりました。

 

しかし以前は何で動いてたのだろうか?????

 

 

 

WordPressで「データベース接続確立エラー」がでた場合の対処法

自宅のwordPressが遅いので

思い切ってサーバの移行を行ってみました。

Linux(CentOS)をシャットダウンし再起動してみると、wordPressが

「なっなっ何と」

「データベース接続確立エラー」となってしまうではないか。

慌てました。慌てました。

ググりまくりです。( ゚Д゚)

wordPressのログより wp_options テーブルが壊れていることが分かりました。


復旧手順を下記に説明します。


①Mysql へログインします。

 ==>    “sudo mysql -u root -p”

そのあとパスワード入れます。

②データベースの切り替え

==>   “use wp”

wordPressデータベースを指定します。

③破損テーブルをチェックします

==> “check table wp_options;”

MsgTypeがError の場合は、お悔み申し上げます。

しかし安心してください。復旧コマンドがあるのです。

④テーブル復旧

==> “repair table wp_options;”

status=OK  がでれば復旧できました。

③のcheck tableで再確認しましょう。

⑤復旧OKならばDBを抜けます

==> “exit”

以上です。わたしのように焦らないでくださいね。

[root@localhost log]# sudo mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use wp
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> check table wp_options;
+---------------+-------+----------+----------------------------------------------------------+
| Table         | Op    | Msg_type | Msg_text                                                 |
+---------------+-------+----------+----------------------------------------------------------+
| wp.wp_options | check | warning  | Table is marked as crashed                               |
| wp.wp_options | check | warning  | 7 clients are using or haven't closed the table properly |
| wp.wp_options | check | error    | Record at pos: 272888 is not remove-marked               |
| wp.wp_options | check | error    | record delete-link-chain corrupted                       |
| wp.wp_options | check | error    | Corrupt                                                  |
+---------------+-------+----------+----------------------------------------------------------+
5 rows in set (0.13 sec)

mysql> repair table wp_options;
+---------------+--------+----------+--------------------------------------------------------+
| Table         | Op     | Msg_type | Msg_text                                               |
+---------------+--------+----------+--------------------------------------------------------+
| wp.wp_options | repair | info     | Wrong block with wrong total length starting at 110808 |
| wp.wp_options | repair | warning  | Number of rows changed from 263 to 256                 |
| wp.wp_options | repair | status   | OK                                                     |
+---------------+--------+----------+--------------------------------------------------------+
3 rows in set (0.36 sec)

mysql> check table wp_options;
+---------------+-------+----------+----------+
| Table         | Op    | Msg_type | Msg_text |
+---------------+-------+----------+----------+
| wp.wp_options | check | status   | OK       |
+---------------+-------+----------+----------+
1 row in set (0.00 sec)

mysql> exit
Bye
[root@localhost log]# 

mysqlログの見方

ログ出力先変更

vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
general_log=0
general_log_file=/var/log/mysql/query.log

[mysqld_safe]
log-error=/var/log/mysql/mysqld.log   #<==ここを変更
pid-file=/var/run/mysqld/mysqld.pid

 

mysql再起動

[root@localhost log]# sudo service mysqld restart
mysqld を停止中: [ OK ]
mysqld を起動中: [ OK ]

 

ログ確認

[root@localhost log]# tail /var/log/mysql/mysqld.log
161114 09:35:27 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
161114 9:35:27 InnoDB: Initializing buffer pool, size = 8.0M
161114 9:35:27 InnoDB: Completed initialization of buffer pool
161114 9:35:27 InnoDB: Started; log sequence number 0 44233
161114 9:35:27 [Note] Event Scheduler: Loaded 0 events
161114 9:35:27 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.73' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
[root@localhost log]#

※socketエラーは調査中

 

クエリーログ

クエリーのログを出力したい場合は、下記のように設定する。

$ sudo vi /etc/my.cnf
・・・
[mysqld]
・・・
general_log=1
general_log_file=/var/log/mysql/query.log

クエリーのログが出力される。

[root@localhost log]# tail /var/log/mysql/mysqld.log
161114 09:35:27 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
161114 9:35:27 InnoDB: Initializing buffer pool, size = 8.0M
161114 9:35:27 InnoDB: Completed initialization of buffer pool
161114 9:35:27 InnoDB: Started; log sequence number 0 44233
161114 9:35:27 [Note] Event Scheduler: Loaded 0 events
161114 9:35:27 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.1.73' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
[root@localhost log]# tail /var/log/mysql/query.log
4 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (241) ORDER BY meta_id ASC
4 Query SELECT * FROM wp_posts WHERE ID = 241 LIMIT 1
4 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (241) ORDER BY meta_id ASC
4 Query SELECT * FROM wp_posts WHERE ID = 244 LIMIT 1
4 Query SELECT * FROM wp_posts WHERE ID = 244 LIMIT 1
4 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (244) ORDER BY meta_id ASC
4 Query SELECT option_value FROM wp_options WHERE option_name = 'jpsq_sync_checkout'
4 Query UPDATE wp_options SET option_value = '0:0' WHERE option_name = 'jpsq_sync_checkout'
4 Query UPDATE `wp_options` SET `option_value` = '1479083179', `autoload` = 'yes' WHERE `option_name` = 'jetpack_next_sync_time_sync'
4 Quit
[root@localhost log]#