「Mediawiki」の版間の差分
編集の要約なし |
編集の要約なし |
||
(同じ利用者による、間の3版が非表示) | |||
1行目: | 1行目: | ||
SELECT * FROM mwtext WHERE old_text LIKE '%文字列%'; | |||
== | MediaWiki の記事データは主に以下のテーブルに格納されます: | ||
* | |||
1. **`page` テーブル**: | |||
- 各ページのメタデータを格納します。このテーブルにはページのタイトル、名前空間、ページIDなどの情報が含まれます。 | |||
- 主なカラム: | |||
- `page_id`: ページの一意のID | |||
- `page_namespace`: 名前空間 | |||
- `page_title`: ページのタイトル | |||
2. **`revision` テーブル**: | |||
- 各ページのリビジョン(変更履歴)を格納します。ここには各リビジョンの作成者、タイムスタンプ、コメントなどの情報が含まれます。 | |||
- 主なカラム: | |||
- `rev_id`: リビジョンの一意のID | |||
- `rev_page`: 関連するページのID(`page_id`と対応) | |||
- `rev_text_id`: テキストテーブルのID(`text`テーブルの`old_id`と対応) | |||
3. **`text` テーブル**: | |||
- 各リビジョンのテキストデータを格納します。実際のウィキテキストがこのテーブルに保存されます。 | |||
- 主なカラム: | |||
- `old_id`: テキストの一意のID | |||
- `old_text`: ウィキテキスト | |||
- `old_flags`: テキストの圧縮形式などのフラグ | |||
記事が作成または編集されると、`page` テーブルに新しいエントリが追加され、`revision` テーブルにそのリビジョンの情報が追加され、`text` テーブルにそのリビジョンのテキストが保存されます。 | |||
例として、特定の記事の最新バージョンを取得するには以下のようなクエリを使用します: | |||
```sql | |||
SELECT page.page_title, text.old_text | |||
FROM page | |||
JOIN revision ON revision.rev_page = page.page_id | |||
JOIN text ON text.old_id = revision.rev_text_id | |||
WHERE page.page_title = 'Example_Page_Title' | |||
ORDER BY revision.rev_id DESC | |||
LIMIT 1; | |||
``` | |||
このクエリでは、ページタイトルが `Example_Page_Title` の最新のリビジョンのテキストを取得します。 | |||
== 文字化けしない方法 == | |||
MySQL で接続するときに日本語が文字化けしないようにするためには、以下のような設定を行う必要があります。具体的には、接続時に文字セットを `utf8mb4` に設定します。以下にコマンドの例を示します。 | |||
1. **MySQL クライアントから接続する場合**: | |||
```sql | |||
SET NAMES utf8mb4; | |||
``` | |||
2. **MySQL クライアントでの接続例**: | |||
```sh | |||
mysql --default-character-set=utf8mb4 -u your_username -p | |||
``` | |||
3. **PHPなどのプログラムから接続する場合**: | |||
- PHPの `mysqli` 拡張を使う例: | |||
```php | |||
$mysqli = new mysqli("localhost", "your_username", "your_password", "your_database"); | |||
if ($mysqli->connect_error) { | |||
die("Connection failed: " . $mysqli->connect_error); | |||
} | |||
$mysqli->set_charset("utf8mb4"); | |||
``` | |||
4. **MySQL コンフィグファイル (my.cnf) で設定する場合**: | |||
- サーバ側の設定: | |||
```ini | |||
[mysqld] | |||
character-set-server = utf8mb4 | |||
collation-server = utf8mb4_unicode_ci | |||
``` | |||
- クライアント側の設定: | |||
```ini | |||
[client] | |||
default-character-set = utf8mb4 | |||
``` | |||
5. **Java の場合 (JDBC)**: | |||
```java | |||
String url = "jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8mb4"; | |||
Connection conn = DriverManager.getConnection(url, "your_username", "your_password"); | |||
``` | |||
これらの設定を行うことで、MySQL に接続する際に文字化けを防ぐことができます。特に重要なのは、クライアントとサーバの両方で `utf8mb4` を設定することです。これにより、MySQL のデータの保存と取得の際に適切な文字エンコーディングが使用されるようになります。 |
2024年6月16日 (日) 09:03時点における最新版
SELECT * FROM mwtext WHERE old_text LIKE '%文字列%';
MediaWiki の記事データは主に以下のテーブルに格納されます:
1. **`page` テーブル**:
- 各ページのメタデータを格納します。このテーブルにはページのタイトル、名前空間、ページIDなどの情報が含まれます。 - 主なカラム: - `page_id`: ページの一意のID - `page_namespace`: 名前空間 - `page_title`: ページのタイトル
2. **`revision` テーブル**:
- 各ページのリビジョン(変更履歴)を格納します。ここには各リビジョンの作成者、タイムスタンプ、コメントなどの情報が含まれます。 - 主なカラム: - `rev_id`: リビジョンの一意のID - `rev_page`: 関連するページのID(`page_id`と対応) - `rev_text_id`: テキストテーブルのID(`text`テーブルの`old_id`と対応)
3. **`text` テーブル**:
- 各リビジョンのテキストデータを格納します。実際のウィキテキストがこのテーブルに保存されます。 - 主なカラム: - `old_id`: テキストの一意のID - `old_text`: ウィキテキスト - `old_flags`: テキストの圧縮形式などのフラグ
記事が作成または編集されると、`page` テーブルに新しいエントリが追加され、`revision` テーブルにそのリビジョンの情報が追加され、`text` テーブルにそのリビジョンのテキストが保存されます。
例として、特定の記事の最新バージョンを取得するには以下のようなクエリを使用します:
```sql SELECT page.page_title, text.old_text FROM page JOIN revision ON revision.rev_page = page.page_id JOIN text ON text.old_id = revision.rev_text_id WHERE page.page_title = 'Example_Page_Title' ORDER BY revision.rev_id DESC LIMIT 1; ```
このクエリでは、ページタイトルが `Example_Page_Title` の最新のリビジョンのテキストを取得します。
文字化けしない方法
MySQL で接続するときに日本語が文字化けしないようにするためには、以下のような設定を行う必要があります。具体的には、接続時に文字セットを `utf8mb4` に設定します。以下にコマンドの例を示します。
1. **MySQL クライアントから接続する場合**:
```sql SET NAMES utf8mb4; ```
2. **MySQL クライアントでの接続例**:
```sh mysql --default-character-set=utf8mb4 -u your_username -p ```
3. **PHPなどのプログラムから接続する場合**:
- PHPの `mysqli` 拡張を使う例: ```php $mysqli = new mysqli("localhost", "your_username", "your_password", "your_database"); if ($mysqli->connect_error) { die("Connection failed: " . $mysqli->connect_error); } $mysqli->set_charset("utf8mb4"); ```
4. **MySQL コンフィグファイル (my.cnf) で設定する場合**:
- サーバ側の設定: ```ini [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci ``` - クライアント側の設定: ```ini [client] default-character-set = utf8mb4 ```
5. **Java の場合 (JDBC)**:
```java String url = "jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8mb4"; Connection conn = DriverManager.getConnection(url, "your_username", "your_password"); ```
これらの設定を行うことで、MySQL に接続する際に文字化けを防ぐことができます。特に重要なのは、クライアントとサーバの両方で `utf8mb4` を設定することです。これにより、MySQL のデータの保存と取得の際に適切な文字エンコーディングが使用されるようになります。