「Mediawiki」の版間の差分

提供:onayami
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
SELECT * FROM mwtext WHERE old_text LIKE '%文字列%';
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 のデータの保存と取得の際に適切な文字エンコーディングが使用されるようになります。