タグ付けされた質問 「mysql」

MySQLのすべてのバージョン(Microsoft SQL Serverではありません)。質問に関連する場合は、mysql-5.7のようなバージョン固有のタグも追加してください。

1
MySQL 5.6 DateTime不正なdatetime値: '2013-08-25T17:00:00 + 00:00'とエラーコード1292
私はMySQL 5.6を使用しており、データベースに対して次のSQLステートメントを実行するプログラムがあります。 UPDATE `m_table` SET `s_time` = '2013-08-25T17:00:00+00:00' WHERE id = '123' 残念ながら、次のエラーが表示されます。不正な日時値:行1の列 's_time'の '2013-08-25T17:00:00 + 00:00' s_timeのデータ型はDateTimeです。 ワークベンチを使用してallow_invalid_datesプロパティを設定しようとしました。 誰でもこのエラーを理解して説明してもらえますか?ステートメントを手動でUPDATE m_tableSET s_time= '2013-08-25 17:00:00' WHERE id = '123'に変更すると、ステートメントが機能することを知っています。 残念ながら、SQLステートメントを提供するプログラム(プログラムの作成者によって有効であると言われています)を変更することはできません。また、+ 00:00が何を象徴しているのかも理解できません。 ありがとう
15 mysql  datetime 

4
再帰的自己結合
私はcommentsこれを単純化できるテーブルを持っています: comments ======= id user_id text parent_id where parent_idはnull入力可能ですが、親コメントのキーになる場合があります。 さて、select特定のコメントのすべての子孫はどうすればいいですか? コメントはいくつかのレベル下にあるかもしれません...

2
テーブルがクラッシュしたとマークされているため、修復する必要があります
MySQLとNagiosがLinux PC(Centos5.5)をインストールしています NagiosからMysql DBにデータを取得するためのスクリプトを作成しました(テーブルのデータを正確に取得します) データフェッチが正しく機能している(「COUNT」コマンドで確認済み) 私は次のコマンドを実行すると問題が発生します mysql> select * from nagios_servicechecks; エラー1194(HY000):テーブル 'nagios_servicechecks'はクラッシュとしてマークされているため、修復する必要があります このコマンドを除き、他のすべてのコマンドは正常に機能します。
15 mysql  linux  restore 

2
ORDER BYに使用するには、選択したすべての列をインデックスでカバーする必要がありますか?
SOで、誰かが最近インデックスを使用してORDER BYを使用しないのはなぜかと尋ねました。 この状況には、3つの列と1万行からなるMySQLの単純なInnoDBテーブルが含まれていました。列の1つである整数にインデックスが付けられ、OPはその列でソートされたテーブル全体を取得しようとしました。 SELECT * FROM person ORDER BY age 彼はEXPLAIN、このクエリがfilesort(インデックスではなく)で解決されたことを示す出力を添付し、その理由を尋ねました。 インデックスが使用される原因となるヒントに もかかわらず、誰かが(他からのコメント/賛成をサポートして)選択された列がすべてインデックスから読み取られたときにソートにのみ使用されると回答しました(つまり、通常は列に出力)。インデックスを走査してからテーブルからカラムをフェッチすると、ランダムI / Oが発生するという説明が後で与えられました。FORCE INDEX FOR ORDER BY (age) Using indexExtraEXPLAINfilesort これが表示されますが、上のマニュアルの章の顔に飛ぶためにORDER BY最適化だけでなく、満足していることに強い印象伝え、ORDER BYインデックスからすると、確かに(追加のソートを実行することが好ましいが、filesortクイックソートとマージソートの組み合わせで、それゆえ 必要があります下の結合しました;順番にインデックスを歩きながらテーブルをシークする必要があります-したがって、これは完全に理にかなっています)が、次のように述べながら、この「最適化」の申し立てを無視することもできません。Ω(nlog n)O(n) 次のクエリは、インデックスを使用してORDER BYパーツを解決します。 SELECT * FROM t1 ORDER BY key_part1,key_part2,... ; 私の読書では、これはまさにこの状況の場合です(ただし、明示的なヒントなしにインデックスが使用されていませんでした)。 私の質問は: MySQLがインデックスを使用することを選択するために、選択されたすべての列にインデックスを付ける必要がありますか ある場合、これはどこに文書化されていますか(もしあれば)? そうでない場合、ここで何が起こっていましたか?
15 mysql  index  innodb  order-by 

7
暗号化フィールドでMySQLデータベースを検索する方法
私がする必要があるとし、特定のテーブルのフィールド暗号化のMySQLのデータベースを。さらに、暗号化したフィールドの一部を検索する必要があります。 とにかくこれらのフィールドをどのように検索しますか? 各レコードを段階的に復号化することはオプションではありません。数千のレコードが複数あるとします。各レコードを復号化し、各レコードが検索に一致するかどうかを確認するには、時間がかかりすぎます。 更新2012-09-07 新しいアプリケーションを実装しようとしているので、データベーススキーマにさらに詳細を追加しても構いません。さらに、現在稼働中のアプリケーションを拡張する必要があります。しかし、これらのアプリケーションの場合でも、詳細を追加しても問題ありません。 更新2012-09-08 暗号化はこの質問の核です。 一部の回答で提案されているアクセス制限はすでに適用されていますが、データを暗号化するための正式な要件に適合していません。 この正式な要件は、 Payment Card Industry Data Security Standard [PCI]ではありません。
15 mysql 


3
PostgreSQLとMySQL:空間的特徴の比較
現在、空間データコンポーネントを持つWebアプリケーションを構築しています。空間データの比較では、最初に特定のポイントを取得し、一致する重複した空間ポリゴンを返します。 そうは言っても、私たちのデータベースには、一般的なリレーショナルデータベースで見られるすべての典型的なものを含む他の多くのコンポーネントがあります。 私たちはプロジェクトで、使用するデータベースソリューションを選択する必要があります。 すべてのプロジェクトメンバーは、MySQLの実装と管理に精通していますが、すべての研究では、特にpostGISを使用した空間データに関して、PostgreSQLがより優れたソリューションであることが示唆されています。 私たちのアプリケーションが多くの同時ユーザーで多くのアクションを体験することを期待しています。 空間データコンポーネントを使用してRDBMSとしてMySQLを使用した経験がある人には、長期的なアドバイスや経験がありますか? PostGISを使用することの不便さはありますか?

2
「tmpテーブルへのコピー」が非常に遅い
これはクエリの私の例です: SELECT nickname, CASE class_id WHEN 1 THEN 'Druid' WHEN 2 THEN 'Necromancer' WHEN 3 THEN 'Mage' WHEN 4 THEN 'Priest' WHEN 5 THEN 'Warrior' WHEN 6 THEN 'Stalker' WHEN 7 THEN 'Paladin' WHEN 8 THEN 'Psionic' END class_name, ROUND(AVG(level),2) level, ROUND(AVG(tabard_id),2) tabard, CASE rank_id WHEN 1 THEN 'Leader' WHEN …

1
mysql.userから匿名ユーザーを削除できません
mysql.usersデータベースから匿名ユーザーを削除しようとしています。しかし、私は奇妙な行動を取っています。コマンドを入力すると: DROP User ''@'WOPR'; 一般的なエラーメッセージが表示されていました。そこで、マシンをリブートして、もう一度試しました。今回は応答を得た Query OK, 0 rows affected. しかし、私が入れたとき SELECT User, Host, Password FROM mysql.user WHERE User=''; 戻り値は次のとおりです。 +------+------+----------+ | User | Host | Password | +------+------+----------+ | | WOPR | | +------+------+----------+ (WOPRは私のホスト名です) コマンドを実行します DROP User ''@'WOPR'; 同じ結果が得られます。 カーネルバージョン2.6.33のArch LinuxでMySQL 5.5の新規インストールを実行しています。 誰がこの動作を引き起こす可能性があるか知っていますか?
15 mysql 


3
.my.cnf設定が機能しないのはなぜですか?
デスクトップのホームディレクトリに.my.cnfファイルがあります。 [dbid] user = myusername password = mypassword database = dbname host = server.location.com 正しく思い出すと、Ubuntu 10.04から11.04にアップグレードする前に、次のコマンドを使用できました。 mysql dbid データベースに直接接続するには しかし、今日私はこのエラーを受け取ります: ERROR 1049 (42000): Unknown database 'dbname' 私は何か間違ったことをした?

2
MySQL-行のカウントにcount(*)とinformation_schema.tablesを使用することの違い
数百万行のテーブル内の行数をすばやくカウントする方法が必要です。Stack Overflowで「MySQL:行数をカウントする最も速い方法」という投稿を見つけました。これは私の問題を解決するように見えました。バユアはこの答えを提供しました: SELECT table_rows "Rows Count" FROM information_schema.tables WHERE table_name="Table_Name" AND table_schema="Database_Name"; スキャンの代わりにルックアップのように見えるので私は好きでしたので、高速でなければなりませんが、テストすることにしました SELECT COUNT(*) FROM table パフォーマンスの違いがどれほどあったかを確認します。 残念ながら、以下に示すように異なる回答が得られます。 質問 回答が約200万行異なるのはなぜですか?全表スキャンを実行するクエリの方が正確な数値であると推測していますが、この遅いクエリを実行せずに正しい数値を取得する方法はありますか? 実行ANALYZE TABLE data_302しましたが、0.05秒で完了しました。クエリを再度実行すると、34384599行という非常に近い結果が得られますが、それでもselect count(*)34906061行と同じ数ではありません。分析テーブルはすぐに戻り、バックグラウンドで処理されますか?これはテストデータベースであり、現在は作成されていないことに言及する価値があると思います。 テーブルがどれだけ大きいかを誰かに伝えるだけの場合は誰も気にしませんが、その数字を使用してデータベースを照会する「同じサイズの」非同期クエリを作成するコードに行カウントを渡したいと思いました。並行して、「Alexander Rubinによるパラレルクエリの実行によるクエリパフォーマンスの低下」で示した方法に似ています。現状では、最高のIDを取得するだけでSELECT id from table_name order by id DESC limit 1、テーブルが断片化しすぎないように願っています。
15 mysql  mysql-5.6  count 

3
MySQL InnoDB page_cleaner設定は最適ではない可能性があります
mysqld.logでこのメモを確認します。 [Note] InnoDB: page_cleaner: 1000ms intended loop took 15888ms. The settings might not be optimal. (flushed=200 and evicted=0, during the time.) このようなことについてここで言及されているようです: 「同期インデックスを実行中」のMySQLインスタンスのストール 私の質問は、このメモがログに記録された場合、どのようなアクションが実行されるべきかということです。 MySQLおよびOSバージョン: mysql-community- server- 5.7.9 -1.el7.x86_64 centos-release-7-1.1503.el7.centos.2.8.x86_64 実行SHOW変数は「%InnoDBの」のような。提案されているように: innodb_page_cleaners | 1

2
変更の記録を保持するデータベースとテーブルを設計する最良の方法は?
以前の変更を追跡するために、プロジェクトに履歴機能を設定する必要があります。 今、2つのテーブルがあるとします。 NOTES TABLE (id, userid, submissionid, message) SUBMISSIONS TABLE (id, name, userid, filepath) 例:ノートに行があり、ユーザーがメッセージを変更したい。変更前と変更後の状態を追跡したい。 これらの各テーブルに列を設定する最善の方法は、アイテムが「古い」かどうかを示すことです。0アクティブであればOR削除/不可視の場合は1。 また、以前の状態、新しい状態、これらのIDが関連するAUDIT TRAILテーブルを保持する履歴()テーブルを作成したいのですが。idid

3
最も効率的なUUID列タイプは何ですか
128ビットUUIDを保存するには、複数の保存オプションがあります。 byte [16]列 2つのbigint / long(64ビット)列 CHAR(36)列-32桁の16進数+ 4つのダッシュ。 dbがサポートしている場合、UUIDデータベース固有の列 インデックスの観点から、どれが最も効率的ですか?データベースが専用のuuidタイプをサポートしていない場合、1、2、3のうちどれが最適な候補ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.