View Full Version : phpMyAdminを使っているのですが・・・
Be-net (http://beso.s8.xrea.com/) のべそです。はじめまして。
最近、自作PHPカウンターをMySQLのデータベースで管理しようとおもいphpMyAdmin(以下PMA)を使ってデータベースをいじっているのですが、IPを記憶するフィールを作ろうとすると、下記のようなエラーがでて受け付けてくれません。
-------------------------------------------------------
エラー
実行されたSQLクエリー :
ALTER TABLE `counter` ADD `counter` INT DEFAULT '0' NOT NULL ,
ADD `lastIP` VARCHAR DEFAULT 'localhost' NOT NULL
MySQLのメッセージ -->
You have an error in your SQL syntax near 'DEFAULT 'localhost' NOT NULL' at line 1
--------------------------------------------------------
あるサイトを参考にしながらカウンタを作っています。
そのサイトにはシェルコマンドでテーブルを作る方法が書いてあるのですが。
そのコマンドをを見ながらPMAで作ったのですが、うまくいきません。
--------------------------------------------------------
>mysql -u root
mysql> create database counter;
Query OK, 1 row affected (0.00 sec)
mysql> use counter;
Database changed
mysql> create table counter (
-> counter int(10),
-> lastIP varchar(255)
-> );
Query OK 0 rows affected (0.00 sec)
mysql> insert into counter values (0,'localhost');
Query OK 0 rows affected (0.00 sec)
mysql> select * from counter;
__________________________
| counter | lastIP |
| 0 | localhost |
''''''''''''''''''''''''''''''''''''''''''''''''''''''
1 row in set (0.00 sec)
mysql> exit
--------------------------------------------------------
シェルコマンドはこんな風に掲載されてました。
自分が間違っているからエラーがでると思うんですが、このようなシェルの場合、PMAではどのように入力すればいいのでしょうか?
Yosihiko
2002/12/10, 10:31 PM
素直に
create table counter (
counter int(10),
lastIP varchar(255)
);
で良いのでは?
PMA の設定さえ良ければですが。
Yosihiko
2002/12/10, 10:47 PM
あるいは PMA でフィールド追加時に長さをきちんと入力することで対応できると思われます。
Originally posted by Yosihiko
あるいは PMA でフィールド追加時に長さをきちんと入力することで対応できると思われます。
なるほど、(10)とか(255)は長さだったんですね。
これを入力したらうまく受け付けてくれました。
しかし、カウンターにエラーが・・・(笑)
こんにちは、また質問があるのですが。
PMAでリレーション機能を有効にするにはどうすればいいのでしょうか。
データベースページの下部に
------------------------------------------------------
エラー
リレーション機能を動かすためのリンクテーブルが有効になっていません。 ここをクリックして原因を見つけて下さい。
------------------------------------------------------
というエラーが表示されてしまいます。
------------------------------------------------------
$cfg['Servers'][$i]['relation'] = ''; // table to describe the relation between links (see doc)
------------------------------------------------------
コンフィグファイルのこの部分に入力するんだと思うのですが、’’の間になにを入力すればいいのでしょうか。
pesceluna
2002/12/14, 07:48 PM
コンフィグファイルのこの部分に入力するんだと思うのですが、’’の間になにを入力すればいいのでしょうか。
phpMyAdminの日本語ドキュメントから引用。
http://202.216.17.73/Documentation_j.html
$cfgServers[n]['relation'] string
2.2.4 から他のテーブルとの連結テーブルの中にキーを記述することができます。 phpMyAdmin は現在、データをクリッカブル値にセットし他のテーブルの参照が可能です。
キーは数値であることが必要です。
この機能を使用するために以下のことが必要です。
同じデータベーステーブルを作成してください。 (for example 'relation') 以下のようなスキームになります。
CREATE TABLE `relation` (
`src_table` varchar(32) NOT NULL default '',
`src_column` varchar(32) NOT NULL default '',
`dest_table` varchar(32) NOT NULL default '',
`dest_column` varchar(32) NOT NULL default '',
PRIMARY KEY (`src_table`,`src_column`)
) TYPE=MyISAM COMMENT='Table Relation';
リレーションテーブル名を $cfgServers[n]['relation'] に記述してください。
キーに関する情報をリレーションテーブルに手で記述してください。
−−−引用ここまで
2.3.0等の比較的新しいPMAでは
$cfgServers[n]['relation'] の指定だけでは不十分です。
http://www.pons-factory.com:8080/phpBB2/viewtopic.php?p=526#526
pescelunaさん、JAMさん質問に答えていただいてありがとうございます。
JAMさんのサイト行ったことがありますよ、そこを見てPMAをインストールさしてもらいました。たいへん参考になりました。
また、参考にさしてもらいますね:)
みなさんのおかげでデータベースの方はちゃんとできたと思うのですが、カウンタがうまく動いてくれません。
自分ではどこがだめなのか検討がつかないのでいろいろ載せておきます。
原因がわかるかたいませんか?
カウンタ->http://be-net.xrea.jp/test/php/db_count.php
@-SQLクエリー---------------------------------------------@
CREATE TABLE `counter` (
`counter` INT( 10 ) DEFAULT '0' NOT NULL ,
`lastIP` VARCHAR( 255 ) DEFAULT 'localhost' NOT NULL
);
@-------------------------------------------------------@
@-参考サイトのSQLコマンド----------------------------------@
>mysql -u root
mysql> create database counter;
Query OK, 1 row affected (0.00 sec)
mysql> use counter;
Database changed
mysql> create table counter (
-> counter int(10),
-> lastIP varchar(255)
-> );
Query OK 0 rows affected (0.00 sec)
mysql> insert into counter values (0,'localhost');
Query OK 0 rows affected (0.00 sec)
mysql> select * from counter;
+-------+------+
| counter | lastIP |
| 0 | localhost |
+-------+------+
1 row in set (0.00 sec)
mysql> exit
@-------------------------------------------------------@
@-カウンタソース-------------------------------------------@
<?
mysql_connect("localhost","beso","*pass*");
mysql_select_db("beso");
$result = mysql_query("select * from counter");
$array = mysql_fetch_array($result);
$counter = $array['counter'];
$lastIP = $array['lastIP'];
$IP = getenv("REMOTE_ADDR");
if($lastIP != $IP)$counter++;
print "$counter <br>";
print "lastIP = $lastIP <br>";
print "IP = $IP";
$result = mysql_query("update counter set counter=$counter,lastIP='$IP'");
?>
@-------------------------------------------------------@
pesceluna
2002/12/15, 02:38 AM
Originally posted by BESO
みなさんのおかげでデータベースの方はちゃんとできたと思うのですが、カウンタがうまく動いてくれません。
うまく動かない、ってのは
・phpのエラー
・エラーにはならないけど意図したように動かない
のか、どっちでしょう?
エラーで動かないのであれば、エラーメッセージを
みないことには分からないし。
# すまんが設置してテストするほど余力がない。(;^^)
意図したように動かないのであれば、
・これこれこういう風にしたい。
・なので、こういう風にやってみた。
・けど、実際はこういう風になる
というように書いてもらわないとわからんのだけれど・・・
Originally posted by pesceluna
うまく動かない、ってのは・・・・
http://be-net.xrea.jp/test/php/db_count.php
↑
これを見てもらえればわかると思たのですが、見ました?
JAMさんへ
SQLで「insert into counter values (0,'localhost');」を実行してみたところ
レコードが追加されました。そして、ちゃんとカウンターが動いてくれました!
いつもアドバイスありがとうございます。
てっきり「insert into counter values (0,'localhost');」は基本値だと勘違いしていました。
前からPMAの動作が不安定と思っていたのですが、その原因は「public_html」に置いていたからでした、このせいでレコードの追加など、各機能が動かなかったのですが、「shared_html」にいれたところ快適に動くようになりました。これも、JAMさんや他の方たちに助言をもらったおかげです。
PMAやSQLの知識はぜんぜんなかったのですが、おかげでだいぶわかるようになってきました。
これでPHPの勉強がスムーズにすすみます。ありがとうございました!
pesceluna
2002/12/15, 07:38 PM
Originally posted by BESO
http://be-net.xrea.jp/test/php/db_count.php
↑
これを見てもらえればわかると思たのですが、見ました?
見て分からなかったからこその書き込みなんですが。
そのページには結果の表示内容だけしかないし、
ソースその他はあなたの書き込みにありましたが
該当ページにもあなたの書き込みにも
「どういう手順で設定したのか、
書かれていない」
のですけれど。
# 推察してくださいってのはもってのほか。
# 「質問者の状況を想像する」という手間がかかるので、
# 状況を適切に説明するよう努力してくださいな。
そんな詳細な事まで書かなければいけないとは知りませんでした。
これからは気をつけますね。:)
vBulletin® v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.