タグ

*DBに関するs_yasueのブックマーク (40)

  • ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes : sonots:blog

    ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes : sonots:blog
  • PHPエスケープ関数の比較一覧 | 株式会社フォレスト・コンサルタンツ

    CR … カーソルを文頭へ戻す制御コード(Carriage Return) EOF … ファイル終端を示す制御コード(End Of File) 黄色い部分が全部で4箇所、すなわち、htmlspecialchars($str)で変換できない文字が1つ、addslashes($str)で変換できない文字が3つあることが分かります。より安全なプログラムを心がけるには、htmlspecialchars($str)ではなくhtmlspecialchars($str, ENT_QUOTES)を、addslashes($str)ではなくmysql_real_escape_string($str)を使う必要があります。 また、クロスサイトスクリプティング対策とSQLインジェクション対策では、変換すべき文字や、変換後の文字が異なることも一目瞭然かと。この2つは全く別物として考えるべきです。 と偉そうに書いて

  • 自己流のSQLインジェクション対策は危険

    HTMLエスケープの対象となる < > & " の4文字は、文字実体参照に変換された後、preg_replace関数でセミコロンを削除してしまうので、中途半端な妙な文字化けになりそうです。 一般的な原則としては、データベースにはHTMLの形ではなくプレーンテキストの形で保存しておき、HTMLとして表示する直前にHTMLエスケープする方法で統一することで、上記のような文字化けやエスケープ漏れをなくすことがよいでしょう。 脆弱性はないのか このsanitize関数に脆弱性はないでしょうか。上表のように、バックスラッシュ(円記号)を素通ししているので、MySQLや、設定によってはPostgreSQLの場合に、問題が生じそうです。以下、それを説明します。以下の説明では、MySQLを使う想定とします。 以下のように、ログイン処理を想定したSQL文組立があったとします。 $sql = sprintf(

  • SQLite入門

    データベースの SQLite の使い方について解説します。 SQLite はサーバとして動作させるのではなく単独のアプリケーションとして動作させることが可能です。インストールも簡単な上に非常にコンパクトなため、アプリケーションと一緒に配布するといった利用も数多くされています。ここでは SQLite を使ってデータベースやテーブルの作成方法、そしてデータを追加したり取得したりする方法について一つ一つ解説していきます。

    SQLite入門
  • GROUP_CONCAT関数の便利さは異常 - 開発の風景 〜KKZのSE日記〜

    http://dev.mysql.com/doc/refman/5.1/ja/group-by-functions.html GROUP_CONCAT(expr) この関数は、グループからの連結された非 NULL 値を伴うストリング結果を戻します。非NULL 値がない場合は NULL を戻します。MySQL では、式のコンビネーションの連結された値を得ることができます。DISTINCT を使用することで、重複した値を除くことが可能です。結果の値をソートしたい場合は、ORDER BY 句を使用してください。逆順でソートするには、DESC ( 降順 ) キーワードを、ORDER BY 句のソートするカラムの名前に加えてください。デフォルトでは昇順になっています。これは、ASC を使うことで明示的に指定することができます。SEPARATOR の後には、結果の値の間に挿入されるべきストリング値が続

    GROUP_CONCAT関数の便利さは異常 - 開発の風景 〜KKZのSE日記〜
  • ちょっと使えるMySQLの小技5つ+1

    こんにちは。最近ガスを止められ温もりの無い生活を送っている松田です。 今回は最近自分が知ったMySQLの小技をいくつか書いてみます。 んなもん常識だろ!ってネタがあっても優しく見守ってあげてください。 まず今回の実行サンプルには以下のテーブルを使ってます。 mysql> SELECT * FROM user_m; +---------+----------+---------------------+ | user_id | name     | create_datetime     | +---------+----------+---------------------+ |       1 | atsushi  | 2007-05-17 21:53:40 | |       2 | joe      | 2007-05-17 21:53:59 | |       3 | masah

    ちょっと使えるMySQLの小技5つ+1
  • MySQL: 文字列の結合に||(パイプ)を利用できるようにする方法 | QK

    MySQLで文字列結合を利用する場合、concat関数しか使えないと思っておりましたが、他者DBMSのように、パイプ(||)で表現することが可能なことを発見してしまいました。 知らなかった・・。 IBM DB2などで文字列結合するようなSQLを発行する場合、基的には文字列の結合は、|| (パイプ)を利用します。 たとえばこんな感じで書くと思います。 db2 => SELECT 'TABLE NAME' || ' is ' || TABNAME from syscat.tables fetch first 10 rows only 1 ------------------------------------------------------------------------------------ TABLE NAME is ATTRIBUTES TABLE NAME is BUFFE

  • 知っておくと便利なMySQL関数

    こんにちは、初夏なのにもう夏バテ気味のinoueです。今日もオクラ買って帰ろうっと。 さて、知っておくと便利なMySQL関数 FIND_IN_SET のお話です。 基的には標準SQLでクエリは書いたほうがいいのですが、MySQL固有の関数なども状況に応じて利用すると 作業効率がアップするので、そんな一例を今回ご紹介します。 http://dev.mysql.com/doc/refman/5.1/ja/string-functions.html より引用: FIND_IN_SET(str,strlist) ストリング str が N サブストリングで構成されるストリング リスト strlist 内にある場合は、1 から N の範囲の値を戻します。 ストリング リストは、‘,’ 文字で区切られたサブストリングで構成されたストリングです。 idtypes

    知っておくと便利なMySQL関数
  • 他DBユーザがMySQLを使うとき、チェックしたい8のポイント - 電子的雪かき生活

    リレーショナルデータベース管理システム、RDBMSOracleMySQL、PostgreSQLDB2…と色々ありますが、それぞれ機能も内部的な仕組みもだいぶ違います。 このため、標準SQLしか知らないとか、他RDBMSしか使ったことがない、という人のの設計・実装を見ると、MySQLではここは直したほうがいいかもー、と思うことがあります。 特に気になるのは、「知らないままでも一見動くものは作れるんだけれど、後から不具合に繋がりかねない部分」。 頻繁に出てくるポイントは決まっているはずなのでチェックリストでもあればいいのに、と思うのですが見たことがありません。 ということで、自分ならこの辺をチェックするかな、と思うポイント8つをまとめてみました。 [2015/01/08更新] わりとアクセスいただいている記事なので、最近のmysql事情を知っている範囲で少し反映しました。 [2017/0

  • MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?

    な、なんと person_diaryはインデックスが適用されずにフルスキャンされ(1行目のkeyがNULL) 逆にpersonはid列に設定してあるプライマリキーが適用される(2行目のkeyがPRIMARY) という二つの謎な現象が発生しました。 そもそもpersonはnameカラムに対してLIKE検索しているのに、id列のプライマリキーが効いちゃうのは全く納得いきません。なぜ、どうしてこんなことが起こるのでしょう? 原因 私がMySQLに期待していた動きとしては ①サブクエリを実行してperson.idのリストをメモリ中に作成 ②person.person_idに張られているインデックスを使って検索 というところでした。 期待通りに動いてくれなかったのには二つのMySQLの特性が関係していました。 特性① サブクエリを含むSQLは外側から先に実行される MySQLの場合、サブクエリを含む

    MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?
  • 主要3空間DBでの、空間Index, 空間検索SQL記述の違いまとめ - Code for History

    最近、業務ではなく余暇に複数人で地図系開発をしているため、開発者の構築可能環境が揃えられずバックエンドが選べない状況でした。 なのでバックエンドを抽象化しないといけなかったのですが、その結果Web開発系の主要3空間DBでの空間検索記述差がわかったので簡単にまとめておきます。 座標値からのGeometryオブジェクトの作成 GeomFromTextで当然…と思ってましたが、PostGISだと通らなくなってます。 PostGISでは空間系関数は頭にSTをつけることで統一したよう。 頭にSTをつけた関数については、spatialiteも対応してますし、mysqlは最新の5.6でも未対応なものの、後述の通り関係性記述の関数では(既存関数との互換性のためとはいえ)ST_系を出してきているので、将来的にはST_系で統一されるものと思います。 蓄積済みデータに対する、検索クエリの差 蓄積済みデータに対し

    主要3空間DBでの、空間Index, 空間検索SQL記述の違いまとめ - Code for History
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • Transact-SQL の要素

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。

    Transact-SQL の要素
  • データベース・クラスタの概要

    はじめに これから4回にわたり、PostgreSQLを中心に、データベース・クラスタについて解説します。以下の内容を予定しています。 第1回: データベース・クラスタの概要 第2回: PostgreSQLクラスタの動向 第3回: 主要なPostgreSQLクラスタ(前編) 第4回: 主要なPostgreSQLクラスタ(後編) 1. データベース・クラスタとは データベース構築の基は、1つのサーバーに1つのデータベースを構築し、運用することです。しかし、いろいろな理由から、1つのデータベースを複数のサーバー(仮想サーバーを含む)にまたがって構築するケースが増えてきました。 連載では、いろいろな種類のデータベース・クラスタとその用途、主な技術や実装例を解説します。解説の対象となるデータベース・クラスタとは、1つのデータベースを、複数のサーバーや仮想サーバー上に構築するシステムを指します。

    s_yasue
    s_yasue 2010/10/05
  • 稼動統計情報を活用しよう(3) — Let's Postgres

    NTT オープンソースソフトウェアセンタ 笠原 辰仁 有用な情報を持つテーブル / ビュー 稼動統計情報を持つテーブルとビューの一部について、どのような情報を蓄積しているかを紹介します。前ページで稼動統計情報の取得方法を述べましたが、紹介したもの以外にも、下記に示すように色々な情報が取得できます。 pg_stat_database DB単位で、実施された表スキャンやインデックススキャン数などが確認できます。DB単位でざっくりとしたアクティビティ状況を確認するのに便利です。このビューでは下記の項目を確認できます。 pg_stat_database 名前 ver. 説明

  • 稼動統計情報を活用しよう(2) — Let's Postgres

    NTT オープンソースソフトウェアセンタ 笠原 辰仁 稼動統計情報を取得してみよう では、実際に稼動統計情報を取得してみましょう。稼動統計情報は、PostgreSQLのテーブルやビューの形で提供されています。pg_stat_* という名称のテーブル/ビューがそれらに当たります。そのため、取得にはSQLを用います。なお、psqlの\dコマンドなどでpg_stat_*のビュー定義を見てみると、pg_stat_get_*() 関数で各種情報が取得されていることが分かると思います。稼動統計情報を直接取得するには関数を使うのですが、それをビュー経由でユーザが閲覧できるようになっています。項では、pg_stat_*で提供されているビューを読み解いていくことにします。 それでは、前ページの冒頭で紹介した情報について具体的に解説していきます。下記は稼動統計情報の中でも多用される情報ですので、覚えておくと

  • 稼動統計情報を活用しよう(1) — Let's Postgres

    NTT オープンソースソフトウェアセンタ 笠原 辰仁 稼動統計情報とは、PostgreSQLが独自に収集・記録している情報です。性能やDB内で起こっている問題などを把握する上で、とても重要です。DBMSでの稼動状況を確認・把握するのに非常に便利なので、この情報を活用し、問題の早期発見やチューニング方法の選択に役立てましょう。 稼動統計情報で分かること 稼動統計情報を活用すると、DBMSを運用する上でとても便利な情報が得られます。特に有用なものを紹介します。なお、稼動統計情報の内容はPostgreSQLのバージョンで若干異なり、新しいバージョンほど得られる情報が増えています。詳しくは「有用な情報を持つテーブル/ビュー」を見てください。 DB単位のコミット数やロールバック数 DB毎に、トランザクションのコミット回数やロールバック回数が分かります。それぞれ、スループットとエラー発生数と置き換える

  • DB設計の神ツール「ERMaster」なら、ここまでできる

    DB設計の神ツール「ERMaster」なら、ここまでできる:ユカイ、ツーカイ、カイハツ環境!(11)(1/3 ページ) 無料のEclipseプラグイン「ERMaster」とは データベースのテーブル設計を行うときに皆さんは、どのようにしているでしょうか? いくつかの無料で利用できるツールが提供されているので、筆者はそれらを利用していましたが、最近「ERMaster」と呼ばれるEclipseプラグインの存在を知りました。 ERMasterは、ほかのツールに比べ、直感的で分かりやすいUI(ユーザーインターフェイス)に、カスタマイズ可能な、Excelで出力できるテーブル定義書、辞書機能など痒いところに手が届くERモデリングのツールです。稿では、このERMasterについてご紹介します。 ERMasterの主な特徴、8つ ERMasterには、主に次のような特徴があります。 【1】直感的で使いや

    DB設計の神ツール「ERMaster」なら、ここまでできる
  • DB設計時のサイズ見積もり - よねのはてな

    ここのところ、javaccとawsに魅了されている米林です。 よく使うDB(Oracle/MySQL/PostgreSQL/SQLServer)における設計時のサイズ見積もりで使うサイトの備忘録。 あとは、OracleからのPython情報。 Oracle Oracle 物理設計 http://www.oracle.com/technology/global/jp/columns/skillup/oracle9i/index.html 領域サイズ見積もり http://otn.oracle.co.jp/document/estimate/index.html OTNにログインする必要ありますがオンラインで見積もりが出来ます。 アカウント持っていない人は、この見積もりツールを使う目的でアカウントを作ってみてはいかがでしょうか。 OLTP系とDWH系においてブロックサイズを考慮し、DWH系はブ

    DB設計時のサイズ見積もり - よねのはてな
  • PostgreSQLを使っている人が使いたい外部ツール | 独り言v6

    前作 PostgreSQL当に高速化したい人のための10のポイント が結構受けたようなのと、外部ツールの話が書ききれなかったので次回作を。まあこっちは受けないと思うが、ついでに備忘録をかねて。内容としては「RDBMSだけ使ってもどうしようもないよね」というのは多い。しかし残念ながらL.starは、PostgreSQL体に比べてこの種のツールの組み合わせについて精通しているとはいいがたい。なので、「PostgreSQLとしては、こんな部分は外部ツールに任せたいよね!」という思いをまとめるように書いてみた。 外部キャッシュ 最近のRDBMSはとても早くて、シンプルなselect * from table where id=? ぐらいだと、10000tps位平然とこなしちゃう。このくらい早いと、web server数台分ぐらいのバックエンドになれるので、それで十分ではないかすら思ってしまう