MySQLのsql_modeについて

またまた移転時のネタ

移転後の動作チェックでINSERT文で下記のエラーが発生

Incorrect integer value: ” ~~~
こんなSQLがNGです。
INSERT INTO table (id, value) VALUES(”, ‘OK’);

auto_incrementのカラムに”を指定している部分でのエラーのようです。
色々調べてみるとsql_modeの設定が影響しているようです。

my.cnfかSQLで設定調整ができるようです。

my.cnfはroot権限、SQLでもMySQLのroot権限が必要です。

MySQLにroot権限でログインします。

設定状況を確認します。

設定をします。

これでINSERTでエラーがでなくなりました。

MySQLのリストア

MySQLのデータをリストア

※-pとパスワード名は間をあけない。

gzで圧縮している場合はパイプさせる。

パスワードの警告がでますけど、処理は続行されます。

PHPのショートタグ

サーバー移転時にショートタグで書いているプログラムがたくさんあった。

ショートタグ↓こんなやつ

全部修正は無理なのでショートタグを許可しちゃいます。

.htaccessに下記を記載

PostgreSQLのoid使用時の注意

PostgreSQLのoid使用時の注意

サーバー移転時の話
7.4→9.2にpsqlもバージョンアップ

SELECT時にoidを使っていたものがカラムがないというエラーが出ました。

マニュアルを調べてみるとoidを使う場合はテーブル作成時に指定しないと駄目らしい。
バージョン8.1以降からデフォルトでのoidは無効のようです。

下記のようにテーブル作成します。

今回はoid使わなくてもOKなところだったのでプログラムを修正しました。

解凍ソフトで解凍できなかった場合に試したこと

解凍ソフトで解凍できなかった場合に試したこと

私は下記の解凍ソフトで使い分けをしている。

通常:Lhaz
Mac文字化け用:CubeIce

gzで圧縮されたDBのバックアップデータを解凍しようとした時に
上記のソフトでは解凍ができなかった。
「書庫が壊れています」とか「移動できませんんでした」など

解凍後のデータ容量が4GB近くあるので、それで駄目なのかな~っと

そこで新たな解凍ソフトを導入

7-Zip
https://sevenzip.osdn.jp/

こちらをインストールして試してみたら成功!

ソフトによってできる、できないがあるんだね~・・・

phpMyAdminでユーザーの新規追加で困った

phpMyAdminでユーザーの新規追加をしようとしてエラー

phpMyAdmin:4.7.6
MySQL:5.7

困った困った。

#1819 – Your password does not satisfy the current policy requirements

「パスワードが現在のポリシー要件を満たしていない」ということです。
英数字、大文字、小文字、記号を含めたパスワードにすると解決です。

phpMyAdminの「パスワードを生成する」のボタンでは上記ポリシーをクリアできてないので注意ですね。

SQLで直接実行するとユーザーの追加ができるので、今回はそちらで対応

ユーザー追加後にDBを追加したり、ユーザーの編集で接続するDBを指定したりしましょう。

rootのパスワードを忘れた場合

rootのパスワードを忘れた!

MySQLを終了

MySQLを設定テーブルをスキップさせて起動

ログイン(パスワードなしでログインできる)

パスワードを再設定

MySQLを終了

通常起動

非同期通信$.ajaxの今と昔

非同期通信で色々調べていたら出てきたやつ

上記これはjQueryのバージョンが1.5以前の古いタイプ

新しいタイプは下記

メモメモ

PostgreSQLのバックアップを取ってみる

PostgreSQLのバックアップを取ってみる

pg_dumpで実行する場合パスワードなしだと下記のエラーが出る
たぶんpg_hba.confでローカルならパスワードなしOKって設定ができると思いますが…

pg_dump: [archiver(db)] connection to database “hogehoge” failed: fe_sendauth: no password supplied

オプション -w でもスルーできない場合に困る。
cronで実行したいときとかにね。

そのときは「.pgpass」ファイルで回避可能ですよ。

上記ファイル名でファイルを作成し、パーミッションを600にします。
そうしないとエラーで怒られます。

.pgpassの中身は下記

パスワード以外はワイルドカード(*)のしてもありです。

ファイル作成後に下記のように実行するとOK

MySQLのバックアップ(mysqldump)を使ってみる

MySQLのバックアップ(mysqldump)を使ってみる

データ量が多いDBだとphpMyAdminからはデータエクスポートに時間がかかるorタイムアウトになる。
そういうときはコマンドからdumpしちゃいましょうって話

コマンドもMySQLのバージョンで警告がでるみたい。

昔は下記のコマンドで行けてた

そうすると下記の警告が発生。
(バージョン5.6から出るようになりました)

Warning: Using a password on the command line interface can be insecure.

警告なので無視することもできるのだけど。
気分的に良くないのでちゃんと手直ししてみましょう。

警告文はパスワードをコマンド上に表示させるのはセキュリティ上よくないぜよ と言っております。

コマンドに出さないようにするためにはパスワードを保存しておくファイルを作成して
それを読み込んであげることで回避できます。

まずはパスワードを保存しておくファイルを作成します。
ファイル名:mysql.cnf

中身↓

そしてコマンドは下記!
※–default-fileは一番最初に指定します。

ちなみにmysql.cnfにdatabase=hoge とデータベース名を入れると下記の警告がでます。

Warning: Using unique option prefix database instead of databases is deprecated and will be removed in a future release. Please use the full name instead.
Warning: mysqldump: ignoring option ‘–databases’ due to invalid value ‘hoge’

設定ファイルにdatabaseは指定しないほうが良いですね。