Category "MySQL・MariaDB"を表示しています。
2018.11.8 木
Reverse Proxyがかんでいるwebサーバーでは以下のようなエラーになって正しいログイン情報を入れてもログインできません。 There is mismatch between HTTPS indicated on the server and client. This can lead to non working phpMyAdmin or a security risk. Please fix your server configuration to indicate HTTPS properly. mysqli_real_connect(): (HY000/1045): Access denied for user 'xxxxx'@'localhost' (using pass...
2018.9.25 火
MySQL5.7.22でrootのパスワードを設定しようと思ったら昔と全然違うことになっていた。 結果からいうと、 $ mysql -u root mysql> update mysql.user set authentication_string=password('foobar') where user='root'; mysql> flush privileges; mysql> exit; $ mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) $ mysql -u root -p Enter password: (foob...
2018.6.13 水
複数のor検索 OR検索+あいまい検索で検索ワードが定まっていないときなんかはクロジャーを使ういいっぽい。 use Illuminate\Support\Facades\DB; ... $words = array("ライオン","ゲノム"); $records = DB::table('sometable')->orWhere(function($query) use($words){ foreach ($words as $k=>$word) { $query->orWhere('text', 'like', '%'.$word.'%'); } }) ->orderBy('id','desc') ->get();
2018.4.3 火
事前の準備 項目 値 モデル app/SampleModel.php (namespace: App\SampleModel) テーブル名 sample_models を想定して説明します。(それともApp\Flightがいいですか?) namespace デフォルトの状態であれば、 use App\SampleModel; しておきます。newでもstaticでもそのままクラスが使えます。 通常は以下ぐらいやればこと足ります。 use Illuminate\Http\Request; use App\SampleModel; use Illuminate\Support\Facades\DB; newする $sample_obj= new SampleModel; でOKです。ほんとすごい...
2017.9.12 火
オートインクリメントの設定をしているカラム(id)に新しい番号が付番されていないっぽい。通常nullを入れるとオートインクリメントが設定されているカラムは自動的に次の値を付番します。急にインサートできなくなったという次第です。 1048:Column 'id' cannot be null auto_incrementの設定を確認する(1) 以下のコマンドで確認 show variables like '%auto_inc%'; 案の定おかしなことになっている mysql> show variables like '%auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +---------...
2017.8.24 木
ERROR 1064 (42000) at line 9****: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Fatal error: Allowed memory size of 536****** bytes exhausted (tried to allocate' at line 40 mysqlのリストア時に出たエラーでちょっと見慣れないなぁと思っていたら、ダンプの時点でコケてました。phpMyAdminからおとしてきたダンプファイルだったので、phpMyA...
2017.7.5 水
Maria DBなんですかね、本当は。 Macのxamppのmysqlがいちいち立ち上がらないことがあります。ロックできないとか何とかいろいろ言われます。 [ERROR] InnoDB: Unable to lock /Applications/XAMPP/xamppfiles/var/mysql/ibdata1, error: 35 .... まるっと関連ファイル削除して起動すると立ち上がります。理由はまだ探っていません。 rm -f aria_log.00000001 rm -f aria_log_control rm -f ib_logfile0 rm -f ib_logfile1 rm -f ibdata1 場合によっては無駄なmysqlのプロセスを全部killしておく。 で再起動。...
2017.6.26 月
MariaDBはMySQLとあんまりかわらないです。というか殆ど同じということでよいのではないかと思います。が、いずれちょっとづつ大きく変わるのだと思うわけです。 version comment MariaDB5.5シリーズ MysQl5.5までをサポート MariaDB5.5シリーズ MysQl5.5までをサポート MariaDB10.0シリーズ Mysql5.6を取り入れ、MariaDB独自機能があり。 MariaDB10.1シリーズ Mysql5.7を取り入れ、MariaDB独自機能あり。 ということになっているので、CentOS7では5.5シリースをyumでインストールしてしまうのが今のところ懸命ということになるでしょうか。 MariaDBをyumでインストール パッケージを見てみる...
2017.6.9 金
このコマンド mysql> show table status like 'test_table'\G *************************** 1. row *************************** Name: test_table Engine: InnoDB Version: 10 Row_format: Compact Rows: 2875 Avg_row_length: 552 Data_length: 1589248 Max_data_length: 0 Index_length: 0 Data_free: 25165824 Auto_increment: 5148 ←ここ Create_time: 2017-06-09 12:05:53 Upd...
2017.5.3 水
WEBサーバーの冗長化にともなってMemcachedやRedisでセッション管理が人気ですが、ここではDBでセッション管理をする方法です。Laravelはとても簡単に設定できました。(少なくともCakePHP3よりかなり簡単に設定できます。) もともとartisanにDBのセッション管理のマイグレーションが設定されているので、.envのパラメータを1つ変更してマイグレーションを行うだけです。 Laravelはデフォルトではセッションドライバーはfileでセットされています。セッションを活性化させるとstrage/framework/session/*に各セッションファイルが生成されます。これをDBにインサートして管理します。 .envの設定 セッションドライバーをdatabaseに設定します...
2017.4.19 水
xamppをインストールしていたらmysqlのフルパスがこうなので、こんなになっちゃう。 /Applications/XAMPP/xamppfiles/bin/mysql -u root -p これだと嫌になっちゃうのでパスを通しておく。 cd ~ vi .bash_profile ユーザーの.bash_profileにパスを追記しておく。 export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH" 保存したら source .bash_profile これで、 mysql -u root -p で普通にログインできる。
2017.2.27 月
MySQLでCSVダウンロードしようと思ったらエラーになった。 $ mysql -u user -p > mysql use my_db; > mysql SELECT * FROM access INTO OUTFILE '/tmp/my_db.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement –secure-file-privでもってセキュリティー強くなった模様です...
2016.12.26 月
MySQLの比較的新しいバージョンになると例の-p12345(パスワード12345)を使うとWarningが出てしまいます。セキュリティー的によくないといえばよくないです。 mysql -u user -p12345 Warning: Using a password on the command line interface can be insecure. 仕様が変わったということになるかと思います。これから先正しくは、userとpasswordの設定ファイルを個別に作ってあげて–defaults-extra-fileオプションで読み込んで実行するというかたちになります。 confファイルの作成と実行 ファイル名は任意のものでよいです。仮にmysql.confとします。 [c...
2016.11.10 木
github.com/j4mie/idiorm http://idiorm.readthedocs.io/en/latest/ 使い方 呼ぶ require_once 'idiorm.php'; configみたいなの ORM::configure('mysql:host=localhost;dbname=my_database'); ORM::configure('username', 'database_user'); ORM::configure('password', 'top_secret'); select whereで普通にselectするみたいなのは、こんな感じで書きます。find_oneで1レコード取得。 $user = ORM::for_table('sample_tab...
2016.8.4 木
データベースの削除についてディレクターや営業さんとの誤解がすごくてすごくてちょっとコラム的な記事にしてみました。タイトルはデータベースの削除になりますが、肝はデータ自体の削除と抹消という話になります。 データは通常HDDに永続的に保存されるので、データの保存という定義はHDDに保存されているというものでよいかと。メモリに一時的に駐屯しているデータについては電源引っこ抜いたりすれば何とかなるので、データ保持の定義からは抜いておきます。 とはいえここではDBに格納されているデータ(MySQL)を例にしてすすめます。 1. WEBページ上から消える DBから引っ張りだしたデータがWEBページ上で利用される、または表示されるという仕組みを使っている場合、WEBページ上から消えると素人さんはデータを削...
2016.5.23 月
開発中になんでわからないけどオートインクリメント属性が消えてしまったので修正。 mysql> ALTER TABLE [TABLENAME] CHANGE [COLUMNNAME] [COLUMNNAME] int(11) AUTO_INCREMENT; ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY' オートインクリメントに設定する値に0がある場合にこういうエラーになります。 0があるレコードを削除してもう一回実行すると大丈夫。 mysql> ALTER TABLE [TABLENAME] C...
2016.3.26 土
データベーススペシャリスト試験(DB)[Database Specialist Examination]というのがあったりして、何をテストするんだかという感じですが、データベースにはそれぞれの概念にそれぞれの名前がついています。その中に外部キー制約というものがあります。 その前に主キー制約というものがあります。これは、あるひとかたまりのデータを識別できるようにするためのデータの整理方法です。住所録を考えましょう。田中太郎さんがいたとします。彼は一個人でありますが、世の中には同姓同名がたくさんおります。田中太郎さんはもしかたら複数人いるかもしれません。その際に同じ住所録に二人の人間を登録すると識別ができなくなります。彼は全く別々の顔しているに違いないし全く別々の人生を歩んでいます。しかも東京都...
2016.3.9 水
localhost以外からつなぐ方が業務的には圧倒的に多いのだけど、趣味的にはまるでこの世にはlocalhostしかないんじゃないかっていうぐらい外部ホストのMySQLに接続することはないです。 権限の設定 mysqlの権限設定grantでユーザー・パスワード・ホスト・DB名をいっしょくたに絡めて設定します。その際にホストの設定もすることになります。このホストにmysqlに接続してくるクライアント側のやホスト名を設定します。rootで設定しないとダメです。 mysql> grant all privileges on [DBNAME].* to [USERNAME]@[HOSTNAME] identified by '[PASSWORD]' with grant option; これで...
2016.3.6 日
dumpのとき Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions… GTIDsを使ったデータベースのレプリケーションをしているときにDumpするとこういうWarnigが出たりします。ダンプデータ自体は落ちてくるので問題なし。GTIDはトランザクションに紐付いたIDなので、例えば開発環境と本番環境などでスキーマだけ移動させたいときなんかは特に必要ないです。いすれにしろレプリケーション自体あんまりやらないので滅多に出ないWarningではあります。 Warning: A partial dump from a server...
2016.3.6 日
Login 最近のバージョンでは-pの後にパスワードベタ書きができなくなったようです。-pPASSWORD こういうやつ。 -hのホスト名を省略すると自動的にlocalhostになります。 mysql -u [USERNAME] -p -h [HOSTNAME] DB DB名を表示する ログインしたユーザーが操作できる権限のDBが表示されます。rootだと全部。 mysql> show databases; DBを選択する DB選択しないと中身の操作できません。 mysql> use [DBNAME]; Table DB内のテーブルを表示する mysql> show tables; テーブル削除(要注意!) こっちは物理的にテーブルごと削除されます。 mysql> d...
2016.3.6 日
テーブルの初期化の方法 連番になっている主キーとかを初期化します。 mysql> USE [DBNAME]; mysql> TRUNCATE TABLE [TABLENAME]; mysql> ALTER TABLE [TABLENAME] AUTO_INCREMENT = 1; これでレコードが1から始まります。 途中の番号から始める 例えば最初のレコードを1000から始めたい場合などはそのまま値を1000にするだけです。 mysql> ALTER TABLE [TABLENAME] AUTO_INCREMENT = 1000; ですが、実レコードに1000以上のものがあると実行できません。