ホーム > フォーラム > 質問箱 > XCL2.1.8 > インストール時に「データの生成」でエラー、

インストール時に「データの生成」でエラー、
投稿者: uza | 投稿日時: 2010/7/14 19:23 | 閲覧: 8776回
uza

XCL 2.1.8のインストールが最後のステップで下記のエラーになります。

1個のデータがデータベースa19bac_bannerclientにインサートされました。
4個のデータがデータベースa19bac_configcategoryにインサートされました。
17個のデータがデータベースa19bac_configoptionにインサートされました。
1個のデータがデータベースa19bac_imgsetにインサートされました。
1個のデータがデータベースa19bac_imgset_tplset_linkにインサートされました。
7個のデータがデータベースa19bac_ranksにインサートされました。
17個のデータがデータベースa19bac_smilesにインサートされました。
1個のデータがデータベースa19bac_groupsにインサートされました。
1個のデータがデータベースa19bac_bannerにインサートされました。
1個のデータがデータベースa19bac_tplsetにインサートされました。
44個のデータがデータベースa19bac_configにインサートされました。
1個のデータがデータベースa19bac_usersにインサートされました。
引用:
2個のデータをデータベースa19bac_groupsにインサートすることに失敗しました。
2個のデータをデータベースa19bac_groups_users_linkにインサートすることに失敗しました。


何度かMySQLのDBをdropして再作成しましたが、状況は変わりませんでした。
データベースusersには「admin」が、groupsには「サイト管理者」が登録されており、groups_users_linkは空です。
これと関連していると思われますが、第2ステップのログインが「ログイン情報が間違っています」というエラーで先に進めません。

大まかな環境は次の通りです。

・PHP 5.3.1、MySQL 5.1.43、プラットフォーム IBM i (AIXのバイナリ)
・extraディレクトリーのutf-8ファイル群でhtmlディレクトリーに上書き
・PHPにはdefault_charset = "UTF-8"を、MySQLにはdefault-character-set=utf8およびskip-character-set-client-handshakeを指定

何かエラーの原因を調査、特定、あるいは回避する方法はあるでしょうか?
ヒントで結構ですので、ご教示よろしくお願いいたします。

コメント(6)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: インストール時に「データの生成」でエラー、 
投稿者: Marijuana | 投稿日時: 2010/7/14 23:01
Marijuana

まず、PHP5.3系には対応していません。
が、気になるのはデータのインサートでエラーになっている事です。
ちゃんと、ja_utf8を選んでいますか?
install\class\dbmanager.phpの216行目
- return false;
+ echo mysql_error();
+ return false;
こんな感じでMySQLのエラーを見てみるのもいいかも

どちらにせよ、PHP5.3系では動作しないので、PHP5.2系にするか、パッチをあてる必要があります。
Re: インストール時に「データの生成」でエラー、 
投稿者: uza | 投稿日時: 2010/7/15 11:01 | 親コメント: #20571
uza

早速のご返答、有難うございます。

引用:
が、気になるのはデータのインサートでエラーになっている事です。
ちゃんと、ja_utf8を選んでいますか?


はい、インストールウィザードの最初の設定でja_utf8を選択しています。

引用:
install\class\dbmanager.phpの216行目
- return false;
+ echo mysql_error();
+ return false;
こんな感じでMySQLのエラーを見てみるのもいいかも


ご指摘の変更をしたところ、エラーの内容は変わらず画面上部に下記エラーが表示されました。

Duplicate entry '0' for key 'PRIMARY'Duplicate entry '0' for key 'PRIMARY'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1)' at line 1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1)' at line 1

MySQLのデータベースはウィザードを実行する前にphpMyAdminからdropしてウィザードに作成されています。
パッチをあててもインストールウィザードのエラーは変わりませんでした。
MySQLのmy.cnfにlog-update = /usr/local/mysql/logxxxxを追加してログを見てみましたが、エラーらしきものは記録されないようです。文字化けがひどいのですが、最後の行はusersへのINSERT文で終わっていました。

引用:
どちらにせよ、PHP5.3系では動作しないので、PHP5.2系にするか、パッチをあてる必要があります。


まだXOOPSにログインすらできていないので、ご指摘のように5.2系にするか、5.3対応のXOOPSを探すかも並行して考え中です。

もしinsertエラーの原因を見つける方法があればご教示いただけるとありがたいです。
宜しくお願いいたします。
Re: インストール時に「データの生成」でエラー、 
投稿者: Marijuana | 投稿日時: 2010/7/15 20:01 | 親コメント: #20572
Marijuana
引用:
Duplicate entry '0' for key 'PRIMARY'Duplicate entry '0' for key 'PRIMARY'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1)' at line 1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1)' at line 1


auto_incrementのフィールドに0がそのまま入っちゃってるんですね。。。
他のテーブルはちゃんと入れられてるのに不思議ですね

groupidのフィールドが、auto_incrementになっているか確認してみてください
また、my.iniの[mysqld]に、sql-modeがあったらコメントアウトしてみてください


引用:
まだXOOPSにログインすらできていないので、

5.3じゃログイン出来なかったはずです。


引用:
もしinsertエラーの原因を見つける方法があればご教示いただけるとありがたいです。

MySQLのバージョンを変えてみるとか、
発行されてるSQLを表示させてコマンドラインから登録出来るかとかかな
対応してないPHP5.3でやるのもどうかと思うので、PHP5.2.xに変えてみるとかも
Re: インストール時に「データの生成」でエラー、 
投稿者: uza | 投稿日時: 2010/7/15 21:54 | 親コメント: #20573
uza

何度もフォローいただき、有難うございます。

引用:
groupidのフィールドが、auto_incrementになっているか確認してみてください
また、my.iniの[mysqld]に、sql-modeがあったらコメントアウトしてみてください


後述しますが、今PHP 5.2の環境を再構築中のためgroupidのフィールドの属性が確認できません...
my.ini(実際はmy.cnf)には「sql-mode=NO_AUTO_VALUE_ON_ZERO」とありました。
5.2で同じ現象がでたら確認いたします。

引用:
引用:
まだXOOPSにログインすらできていないので、
5.3じゃログイン出来なかったはずです。


そうなのですか...
5.3対応パッチなどがあるので、だましだまし使えるかと甘く見てしまいました。

引用:
引用:
もしinsertエラーの原因を見つける方法があればご教示いただけるとありがたいです。
MySQLのバージョンを変えてみるとか、
発行されてるSQLを表示させてコマンドラインから登録出来るかとかかな
対応してないPHP5.3でやるのもどうかと思うので、PHP5.2.xに変えてみるとかも


結局PHPを5.2.12に変更(入れなおし)することにしました。(MySQLは5.1.43)

いろいろとアドバイスをいただき、たいへん参考になりました。
有難うございました。
Re: インストール時に「データの生成」でエラー、 
投稿者: Marijuana | 投稿日時: 2010/7/15 22:57 | 親コメント: #20574
Marijuana
引用:
my.ini(実際はmy.cnf)には「sql-mode=NO_AUTO_VALUE_ON_ZERO」とありました。

これが原因ですね
このページから引用
引用:
NO_AUTO_VALUE_ON_ZERO は、AUTO_INCREMENT カラムの処理に影響を与える。通常、NULL または 0 のいずれかをカラムに挿入することにより、カラムの次のシーケンス番号を生成する。 NO_AUTO_VALUE_ON_ZERO を指定すると、0 のこの働きが抑制されるため、NULL だけが次のシーケンス番号を生成することになる。このモードは、0 がテーブルの AUTO_INCREMENT カラムに保存されている場合に役に立つ(これは推奨されている方法ではないが)。たとえば、mysqldump でテーブルをダンプしてから再読み込みした場合、MySQL は通常、0 値に遭遇したときに新規シーケンス番号を生成するため、ダンプされたテーブルと再読み込みしたテーブルの内容が異なる結果になる。この場合、ダンプしたファイルを再読み込みする前に NO_AUTO_VALUE_ON_ZERO を有効にするとこの問題が解決する(このオプションが使用可能になった MySQL 4.1.1 以降、mysqldump によるダンプ出力には、自動的に NO_AUTO_VALUE_ON_ZERO を有効にするためのステートメントが含まれている)。

他のサーバとの互換性のために使用するオプション値もある。 これらを指定することにより、SHOW CREATE TABLE の実行結果から、以前のバージョンの MySQL または他のデータベースサーバが理解できない出力が除外される。 これらのオプション値を使用すると、CREATE TABLE ステートメントの他のサーバへの移植性が高まる。
Re: インストール時に「データの生成」でエラー、 
投稿者: uza | 投稿日時: 2010/7/16 11:06 | 親コメント: #20575
uza
引用:
これが原因ですね


はい、その通りでした!
my.cnfの該当行をコメントアウトし、ログインまで進むことができました。

なお、PHPを5.2にしたのですが、今回のケースではこれは関係ないと思います。
おかげさまで作業を続けることができます。
有難うございました。

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top