問題タブ [mysql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 開発、テスト、本番環境でデータベースをどのように管理していますか?
開発サーバー、テスト サーバー、および運用サーバーの間でデータベース スキーマとデータを管理する方法の良い例を見つけるのに苦労しました。
これが私たちのセットアップです。各開発者は、アプリと MySQL データベースを実行する仮想マシンを持っています。彼らがやりたいことを何でもするための個人的なサンドボックスです。現在、開発者は SQL スキーマを変更し、SVN にコミットするテキスト ファイルにデータベースをダンプします。
コミットされた最新のコードを常に実行する継続的インテグレーション開発サーバーをデプロイしたいと考えています。ここでこれを行うと、ビルドごとに SVN からデータベースがリロードされます。
「リリース候補」を実行するテスト (仮想) サーバーがあります。現在、テスト サーバーへのデプロイは非常に手作業のプロセスであり、通常は SVN から最新の SQL を読み込んで微調整する必要があります。また、テスト サーバー上のデータには一貫性がありません。最終的には、最後にコミットした開発者がサンドボックス サーバーに持っていたテスト データがそのまま残ります。
すべてが崩壊するのは、本番環境へのデプロイです。ライブ データをテスト データで上書きすることはできないため、すべてのスキーマ変更を手動で再作成する必要があります。データを操作するために多数のスキーマ変更または変換スクリプトがあった場合、これは非常に複雑になる可能性があります。
問題が単なるスキーマである場合は、より簡単な問題になりますが、データベースには、セキュリティやアクセス許可テーブルのメタデータなど、開発中にも更新される「ベース」データがあります。
これが、継続的インテグレーションとワンステップ ビルドに移行する際の最大の障壁です。どのように解決しますか?
フォローアップの質問: データベースのバージョンを追跡して、特定のデータベース インスタンスをアップグレードするために実行するスクリプトを知るにはどうすればよいですか? Lance のようなバージョン テーブルは、標準的な手順の下に記載されていますか?
タランティーノを参考にしていただきありがとうございます。私は .NET 環境ではありませんが、DataBaseChangeMangement wiki ページが非常に役立つことがわかりました。特にこのPowerpoint プレゼンテーション (.ppt)
*.sql
特定のディレクトリ内のスクリプトの名前をデータベース内のテーブルと照合してチェックし、ファイル名の最初の部分を形成する整数に基づいて、そこにないスクリプトを順番に実行する Python スクリプトを作成します。それが非常に単純な解決策であると思われる場合は、ここに投稿します。
このための作業スクリプトがあります。DB が存在しない場合は DB の初期化を処理し、必要に応じてアップグレード スクリプトを実行します。既存のデータベースを消去し、ファイルからテスト データをインポートするためのスイッチもあります。200行くらいなので載せません(興味があればペーストビンに載せるかもしれませんが)。
sql - mysql データベースを sqlite データベースに変換する最良の方法は何ですか?
現在、SQLite データベースに変換したい比較的小さな (4 または 5 テーブル、5000 行) MySQL データベースがあります。これを複数回行う必要がある可能性があるため、誰かが便利なツール、または少なくとも簡単に複製できる方法を推奨できれば幸いです。
(関連するデータベース/マシンへの完全な管理者アクセス権があります。)
mysql - MySQLの文字列から引用符とカンマを削除する
ファイルからいくつかのデータをインポートしていますが、数値が変換されるCSV
よりも大きいなどです。1000
1,100
int
これから引用符とコンマの両方を削除して、フィールドに入力できるようにするための良い方法は何ですか?
編集:
データは実際にはすでにMySQLテーブルにあるので、SQLを使用してこれを実行できる必要があります。混乱してすみません。
mysql - フォールバックシナリオのMySQLレプリケーション
異なるジョブ(異なるデータベースを保持している)を持つ2つのmysqlサーバーがあり、一方が失敗したときに一方を使用してスリップできるようにしたい場合、両方のデータを同等に保つ方法を提案しますか?リアルタイムに」?
明らかに、x分ごとに完全なデータベースダンプを作成することはできません。
バイナリログについて読んだことがありますが、それは私が進む必要のある方法ですか?フォールバックサーバーの速度が大幅に低下することはありませんか?バイナリログに一部のテーブルを含めない方法はありますか?データが変更されても問題ありませんか?
python - パイロンエラー-「MySQLサーバーがなくなりました」
単純なWebアプリケーションを提供するためにPylons(Pythonフレームワーク)を使用していますが、エラーログに次のように表示されるため、時々停止するようです。(2006, 'MySQL server has gone away')
少し調べてみたところ、MySQLへの接続が更新されていなかったことが原因であることがわかりました。ただし、これは問題にはなりません。構成sqlalchemy.pool_recycle
ファイル内のが自動的に存続するためです。デフォルトはでしたが、この問題のため3600
にダイヤルし直しました。1800
それは少し役に立ちましたが、ドキュメントによると問題3600
ないはずです。エラーはまだ半定期的に発生します。私はそれをあまり下げたくありません、そしてDOSは私自身のデータベースです:)。
たぶん私のMySQL設定の何かが間抜けですか?正確にどこを見ればよいかわからない。
その他の関連する詳細:
mysql - MySQLレプリケーション:データベースを指定しない場合、log_binはすべてをログに記録しますか?
多数のデータベース(クライアントごとに1つ)を実行するサーバーのレプリケーションを設定しており、次の代わりにmy.cnfに常に追加することを計画しています。
私はむしろただ持つことができます
(そしてログに記録するデータベースが指定されていません)そして他のすべてがログに記録されていると仮定しますか?
編集:実際にすべてのbinlog-do-dbエントリを削除すると、すべてがログに記録されるように見えます(データベースを移動すると、バイナリログファイルの位置が変わるのがわかります)が、スレーブサーバーでは何も取得されません!(おそらく、これはreplicate-do-dbを使用する場合です。これはアイデアを殺してしまいます。MySQLに複製するデータベースを自動的に検出させることはできないと思います)。
mysql - MySQL管理者バックアップ:「互換モード」、これは正確に何をしているのですか?
Mysql Administratorでバックアップを行う場合、「互換モード」とは正確には何ですか?
webminによって生成されたバックアップをmysql管理者内で利用可能なアップロードツールとブリッジしようとしています。私のデータにはすでにいくつかの矛盾があります(ダニ、コンマなど、私は思います)私はただキンクアウトしようとはしません(とにかく将来再び現れるかもしれません)。これらのねじれは、バックアップから復元しようとするとエラーを生成します。
ここで、webminからバックアップを生成し、MySQL管理者を使用してそれらを復元すると、失敗します。しかし、MySQL管理者を使用してバックアップを生成し、「互換モード」にチェックマークを付けた場合は、MySQL管理者(別のインスタンス)に移動して復元します...動作します!
MySQLによると、「互換モード」は次のとおりです。
互換モードでは、古いバージョンのMySQLAdministratorと互換性のあるバックアップファイルが作成されます。
一方、Webminには、互換性のために次のオプションがあります。
- ANSI
- MySQL 3.2.3
- MySQL 4.0
- PostgreSQL
- オラクル
- Microsoft SQL
- DB2
- MaxDB
どちらが最適だと思いますか?私のデータセットは非常に大きいので、1つずつ実験するのにかなりの時間がかかります(特に、思考がブルートフォースに勝る可能性がある場合)。
編集:ANSIを実行しているようですが、100%ではありません。
mysql - MySQLストアドプロシージャにリストデータ型はありますか、またはそれらをエミュレートする方法はありますか?
リストを引数として取り、MySQL でストアド プロシージャを作成したいと考えています。たとえば、1 回の呼び出しで 1 つのアイテムに複数のタグを設定できるようにしたいとします。その場合、アイテムの ID と設定するタグのリストを取得するプロシージャを定義します。しかし、これを行う方法を見つけることができないようです。私が知る限り、リストのデータ型はありませんが、何とかエミュレートできますか? タグのリストはカンマで区切られた文字列で、どうにかして分割してループすることができますか?
通常、MySQL ストアド プロシージャでリストをどのように操作しますか?
mysql - MySQL の 1 つを除くすべての列を選択しますか?
select ステートメントを使用して、特定の MySQL テーブルから 1 つを除くすべての列を取得しようとしています。これを行う簡単な方法はありますか?
編集:この表には53列あります(私のデザインではありません)
sql - 双方向外部結合
テーブル A があるとします。
およびテーブル B:
A.itemid=B.itemid で A*B を右方向と左方向の両方で結合したい。すなわち結果:
MySQL で 1 つのクエリでそれを行う方法はありますか?