MySQL Windowsでsql_mode設定が変更できない
sql_modeを変更するために、Mysqlのインストールディレクトリにあるmy.iniを変更しましたが、データベースに反映されませんでした。それは、my.iniが別の場所にもあったためでした。
そのときのことをメモしておきます。
1.MysqlのインストールディレクトリにあるMySQL SERVER5.7/my.iniを変更しました。
下の1行をコメントアウトしました。
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
2.もう一つのmy.iniを変更しました。
もう一つのmy.iniの場所は、php.iniのdatadirの一つ上の階層にあるにあるMySQL Server 5.7\my.iniです。
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
Mysqlのインストールディレクトリが、WindowsのProgramDataやProgramFileの場合は、管理者権限でファイルを編集する必要があります。
3.コマンドプロンプトから確認します。
select @@GLOBAL.sql_mode;
下の結果が表示されました。
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
| |
+-------------------+
4.メモ
sqlは、「@@GLOBAL.sql_mode」でsql_(アンダーバー)modeですが、
iniファイルには、「sql-mode」でsql-(ハイフン)modeでした。
5.参考
MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.7 サーバー SQL モード
Cakephp htaccessでのRewrite設定
Cakephpを使うときプロジェクトを配置しようとして、悩んだことを書きます。
ドキュメントルートにフォルダを作成し、その中にindex.phpを置きたいと考えました。そのとき、htaccessファイルの設定に困りました。
例として、ドキュメントルートに「project」フォルダを作成し、index.phpファイルを置く場合を書きます。
1.index.phpを格納
ドキュメントルートに「project」フォルダを作成し、ダウンロードしたCakephpに含まれているindex.phpファイルを置きます。
2.htaccessを作成
コントローラ名をURLから取得するため、Rewriteを設定をします。Rewriteを設定するために、htaccessを作成しindex.phpと同じディレクトリに配置します。
以下、htaccessの内容です。
1.書き換えを有効にします
RewriteEngine On
2.フォルダの場所を指定します
RewriteBase /project
3.書き換えの条件を指定します
RewriteCond %{REQUEST_FILENAME} !-f
(%{REQUEST_FILENAME}が存在するファイル名の場合はRewriteしません。)
RewriteCond %{REQUEST_FILENAME} !-d
(%{REQUEST_FILENAME}が存在するディレクトリ名の場合はRewriteしません。)
4.書き換え内容を指定します。
書き換えの条件を満たし、1つ目の正規表現に一致した場合2つ目に書き換えます。
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
[QSA]は「Query String Append」の略で、[QSA]を指定すると、%{QUERY_STRING}が引数として付きます。上の場合、 index.php?url=$1&%{QUERY_STRING} となるそうです。
[L]を指定すると、この後RewriteRuleを使って書き換えません。
たとえば、「http://ドメイン/project/test/view」(コントローラ名がtest、メソッド名がview)とアクセスした場合、書き換え後のurlパラメータには「test/view」が入ります。
Cakephpの導入のために、少しだけRewriteについて学びました。まだまだRewriteについて勉強しないといけないと感じています。また時間があるときに、Rewriteをもっと勉強します。
参考
(参考にさせていただきました。わかりやすかったです。感謝します。)
調布市子ども交通教室
昨日はこどもの日でしたので、9歳の娘と一緒に、調布市子ども交通教室に行きました。娘は自転車に乗れなかったので、自転車に乗る練習のために行きました。
昨日は、祝日でしたがこどもの日でしたので、一般開放されていました。
カーブや円コースがあり、ハンドル操作の練習ができます。
横断歩道や信号・標識があり、安全に自転車に乗るための練習ができます。
平らで広いコースをまっすぐに走ることができ、自転車に乗るための練習もできました。
娘の体に合った自転車を借りてのびのびと練習ができましたので、娘は、昨日自転車に乗れるようになりました!
娘は「また行きたい!」と言っています。今度は、安全に自転車に乗る練習のために行こうと思っています。
自転車やヘルメットを持たずに行きました。自転車もヘルメットも貸してもらうことができて助かりました。自転車の選び方を教えていただきました。サドルに座った時、ひざが伸びて足の裏全体が地面につく自転車がいいそうです。
中央自動車道の高架下なので、快適に自転車の練習ができます。コースが整備されていますので、安全に自転車の練習ができます。
このような安全で快適な自転車の練習場を提供してくださり、とても感謝しています。
<調布駅からの行き方>
調布駅北口からバスに乗ります。
「調布市子ども交通教室」の最寄りバス停は「御塔坂下」で、調布駅北口の11番バス停または13番バス停から発車するバスに乗車すればいいそうなのですが、、、。昨日は調布駅に到着したタイミング悪く、「御塔坂下」を通るバスが来るまでに時間がありました。
そのため、「御塔坂下」は通らないけれど「御塔坂」を通るバスに乗り、「御塔坂」で下車して、(娘と二人でだらだらと歩いて)約5分ぐらい歩きました。
<お休みの日>
お休みの日があります。下のページでご確認ください。
CakePHP3 データベースにデータを挿入
CakePHP3でデータベースにデータを挿入する方法を書きます。
1.TableRegistryクラスを使います。
use Cake\ORM\TableRegistry;
2.getメソッドの引数にテーブル名を指定し、TableRegistryオブジェクトを作成します。
$booksTable = TableRegistry::get('Books');
3.TableRegistryオブジェクトのnewEntityメソッドを使って、新しいエンティティを作成します。
$book = $booksTable->newEntity();
$book->title = '本タイトル';
$book->content = '本の中身';
4.作成したエンティティを、TebleRegistryオブジェクトのsaveメソッドの引数に渡します。
if ($booksTable->save($book)) {
$id = $book->id;
}
5.saveメソッドを実行後、エンティティには新しいidができています。
上の場合、データベースにBookテーブルを作成し、id列とtitle列とcontent列を含めました。コントローラ名はBooksControllerとしました。
参照
cakephp 新規作成したテーブルを使うモデルを追加するときの注意
データベースにテーブルを新規作成し、そのテーブルを使うモデルを追加した時、困ったことを書きます。
Cakephpは、データベースのテーブル一覧を、キャッシュとして保存します。
基本的には、app/tmp/cache/modelsに、「cake_model_(データベース識別子)_(データベース名)_list」という名前で、テーブル一覧のキャッシュが保存されます。
(※ キャッシュの格納場所と名前については、下記の「キャッシュの格納場所と名前のご注意」をご覧ください。)
データベースにテーブルを新規作成した場合、キャッシュされているテーブル一覧を一度削除して、新しいテーブルを含むテーブル一覧をキャッシュする必要があります。
<補足:データベースのテーブル構造を変更した場合>
Cakephpは、テーブル構造もキャッシュとして保存しますので、テーブル構造を変更した場合も、キャッシュの削除が必要です。
基本的には、app/tmp/cache/modelsに、「cake_model_(データベース識別子)_(テーブル)」という名前で、テーブル構造のキャッシュが保存されます。
(※ キャッシュの格納場所と名前については、下記の「キャッシュの格納場所と名前のご注意」をご覧ください。)
※ キャッシュの格納場所と名前についてご注意
config/app.phpなどの設定ファイルで、格納場所やファイル名を変更している場合は異なりますので、設定ファイルをご確認ください。