この結果がNULLだと上記エラーが出るようです。 対応としては、my.cnfに secure-file-priv="" の一行を追加してMySQLを再起動します。 my.cnfの場所がわからない mysql --help | grep my.cnf order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
mysql> select count(*) from `information_schema`.`tables` where `table_schema` = 'table'; +----------+ | count(*) | +----------+ | 100 | +----------+ 1 row in set (0.01 sec) mysql> select count(*) from information_schema.columns where table_name = '#{テーブル名}'; +----------+ | count(*) | +----------+ | 158 | +----------+ 1 row in set (0.01 sec)
竈門禰󠄀豆子をMySQL5.6のテーブルにinsertしようとすると正しく格納できず、竈門禰となってしまうケースがあるという話を聞き、調べてみました。 実践 まずは試しにやってみます。 mysql> show create table verification\G *************************** 1. row *************************** Table: verification Create Table: CREATE TABLE `verification` ( `name` varchar(100) COLLATE utf8_bin DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin 1 row in set (0.01 sec) mysql> inse
SAVEPOINT、ROLLBACK TO SAVEPOINT および RELEASE SAVEPOINT ステートメント
こんにちは @kako_351です。 テスト用のテーブルを用意したいときなど、テーブル構造も中のデータもそのままで名前だけ_testとかつけてまるっとコピーする方法。 検索すればすぐ出てきますが、毎回忘れがちなので備忘録です。 また、こういう風に書けば記憶にも残るかなと思って。 2つのSQLを実行するだけ ①構造が同じテーブルを作成 LIKE演算子を使えば簡単にできます。
MySQLのびみょーな行ロックに悩まされたのでメモ代わりに。 全部MySQL5.5でInnoDB使っている時のお話デス。 こんなテーブルが有るとしますよ。 create table table001 ( id int primary key, name text ); そしてこんなデータが入っています。 A> select * from table001; +----+-----------------+ | id | name | +----+-----------------+ | 1 | 水瀬伊織 | | 2 | 伊織さま | | 3 | いおりん | | 4 | デコちゃん | +----+-----------------+ まあ、データの中身は気にしない方向で。 そんなアイマス好きのAさん。 伊織さまを「デコちゃん」呼ばわりしている id=4 が許せないので書き換えてやろうと決
CREATE TEMPORARY TABLE文 MySQLのCREATE TABLE文には「TEMPORARY」キーワードを付けることができます。 これを付けると文字通り、一時テーブルとして表が作成されます。 http://dev.mysql.com/doc/refman/5.1/ja/create-table.html テーブルを作成する時、TEMPORARY キーワードを利用する事ができます。 TEMPORARY テーブルは現在の接続でのみ現れ、接続が終了すると自動的にドロップされます。 これは、2つの異なる接続同士、 または、既存の同名の非TEMPORARY テーブルとお互いに対立する事無く、 同じテンポラリ テーブル名を利用する事ができるという意味になります。 (テンポラリ テーブルがドロップされるまで、既存テーブルは隠されています。) テンポラリ テーブルを作成する為には CRE
超久々。MySQLのDELETE JOINについて。 投稿日:2012年07月26日 カテゴリー MySQL 投稿者 nonukes いやさあ、最近お仕事が忙しいというか、気が付きゃ復職して半年が過ぎて、かなり疲労が溜ってきてるのね。 家に帰ってまで仕事に没頭している訳ではないんだけど、家に帰るとどっと疲れが出て、帰ってまでパソコン触ろうという気になかなかなれなくてね。 前回のエントリから早1ヶ月。 さすがに、ちょっとは記事を書かないとね。 と、いうワケで、MySQLのDELETE文について書きます。 これまで、データベースからデータを削除する場合には、 DELETE FROM `table_name` WHERE `id` = '{$id}' てなカンジで、WHERE句にはそのテーブルに存在するカラムを直接指定していたが、今回の仕事では他の関連テーブルのカラムの値に基づいて削除する必要が
select table_name, column_name from information_schema.columns where column_name = '検索したいカラム名' and table_schema = '検索対象のデータベース名'; Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up
タイトル通りのことがやりたかったので、調べてみて以下のようなSQLを作った。 UPDATE TABLE1 T1 SET ( T1.VAL1 ,T1.VAL2 ,T1.VAL3 ) = ( SELECT T2.VAL1 ,T2.VAL2 ,T2.VAL3 FROM TABLE2 T2 WHERE T1.ID = T2.ID ); でも、動かない。。。 さらに調べてみると、MYSQLの場合は以下のようにするみたい。 UPDATE TABLE1 T1 ,TABLE2 T2 SET T1.VAL1 = T2.VAL1 ,T1.VAL2 = T2.VAL2 ,T1.VAL3 = T2.VAL3 WHERE T1.ID = T2.ID; 知らなかった。
MySQLでは以下のようなクエリーでカラムを追加することができる。 ALTER TABLE <テーブル名> ADD <カラム名> <型情報>; ALTER TABLE test ADD name varchar(255); ALTER TABLE test ADD num int unsigned; ALTER TABLE sample ADD address varchar(1023) NOT NULL; また、以下のようにカラムを追加する位置を指定することもできる。 ALTER TABLE <テーブル名> ADD <カラム名> <型情報> AFTER <カラム名>; ALTER TABLE <テーブル名> ADD <カラム名> <型情報> FIRST; ALTER TABLE test ADD comment text AFTER name; ALTER TABLE test ADD
SAVEPOINT、ROLLBACK TO SAVEPOINT および RELEASE SAVEPOINT ステートメント
こんにちは、DBAです。 MySQL5.6のオンラインALTER TABLEでハマった時のおはなしです。 5.6にはオンラインALTER TABLE関連のパラメーターに innodb_sort_buffer_size というものが追加されており(5.5以前はfast index creationが効く時に使われるパラメーターとして内部的に1Mでハードコードされていたものが、設定可能になった)、前にざっくり試したところ 大きくすれば一応それなりの恩恵は受けられそうなので大きくしたんですよ。 毎日の定期バッチで盛大にInnoDBのテーブルにバルクインサートをかけた後にALTER TABLEでインデックスをくっつけてRENAME TABLEでテーブルを切り替える…なんてことをやっているサービスには打ってつけだと思ったわけです(そもそもそのやり方の善悪について やがて DBAは 考えることを止めた
なんとかして制限を超えないといけない時ってありますよね。 MySQLで、InnoDBでPK・Uniqueをはるカラムには、フィールド長の制限があります。 俗に言う767byte問題です。 MySQLの767byte問題 1,テーブルの文字コードをシングルバイトにする 2,カラムの文字コードをシングルバイトにする 3,カラムを分割する 総評 MySQLの767byte問題 プリフィックスは最高で1000バイトの長さまで可能です。(InnoDB テーブルは767バイト)非バイナリ データ タイプ(CHAR、VARCHAR、TEXT)では CREATE INDEX ステートメントのプリフィックス長は文字数で解釈される一方、プリフィックス リミットはバイトで計算されるという事を覚えておいて下さい。マルチバイトの文字セットを利用するカラムのプリフィックス長を指定する時にはこれを考慮に入れておいて下さ
MySQL において、データベースはデータディレクトリ内のディレクトリに対応しています。 データベース内の各テーブルも、データベースディレクトリ内の少なくとも 1 つ (ストレージエンジンによってはそれ以上) のファイルに対応しています。 トリガーもファイルに対応しています。 この結果、基になるオペレーティングシステムで大文字と小文字が区別されるかどうかが、データベース名、テーブル名、およびトリガー名で大文字と小文字が区別されるかどうかに影響します。 つまり、このような名前は Windows では大文字と小文字が区別されませんが、ほとんどの種類の Unix では大文字と小文字が区別されます。 特に重要な例外は、Unix ベースであるが、大/小文字を区別しないデフォルトのファイルシステムタイプ (HFS+) を使用する macOS です。 ただし、macOS は UFS ボリュームもサポート
TIMESTAMP カラムは DATETIME カラムと同じフォーマットで表示されます。言い換えると、表示幅は 19 文字に決められていて、形式は 'YYYY-MM-DD HH:MM:SS' です。 TIMESTAMP 型の値は、格納するときに現在のタイムゾーンから UTC に変換され、取り出すときに UTC から現在のタイムゾーンに変換されます。(この変換が行われるのは、TIMESTAMP データ型の場合だけで、DATETIME などのほかのデータ型では行われません。)デフォルトでは、接続ごとの現在のタイムゾーンはサーバーの時刻です。タイムゾーンの設定は、MySQL Server Time Zone Supportに説明されているように、接続ごとに行うことができます。タイムゾーン設定が一定であるかぎり、格納した値と同じ値を復帰させることができます。TIMESTAMP 値を格納したあとで、
hogeテーブルをhoge_20081123というテーブルにコピーする方法。 /* hogeテーブルのスキーマをコピーしてテーブル作成 */ > CREATE TABLE hoge_20081123 LIKE hoge; /* hogeテーブルのデータをINSERT */ > INSERT INTO hoge_20081123 SELECT * FROM hoge; たまにしかやらないのですが、いっつも忘れているのでメモ。 実践ハイパフォーマンスMySQL 第3版 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,菊池研自(監訳),株式会社クイープ 出版社/メーカー: オライリージャパン 発売日: 2013/11/25 メディア: 大型本 この商品を含むブログ (6件) を見る
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く