我有一个小的php文件,它只是在数据库中创建表。我花了好几天试图调试它,这让我感到难过。当我执行查询时,它会出现丑陋的HTTP Error 500 (Internal Server Error): An unexpected condition was encountered while the server was attempting to fulfil the request.
。 但是,当我打印出查询并将其粘贴到数据库中时,它可以正常工作。
我还注意到,“手表已经存在”会在手动输入查询时闪烁,但会消失并快速工作。与此问题Mysql 1050 Error "Table already exists" when in fact, it does not类似,但我尝试删除并重新创建数据库但未成功。如果有人能提供帮助,我们将不胜感激。这是php代码
$users = 'CREATE TABLE users (
id int UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
username varchar(30) NOT NULL, UNIQUE(username),
password varchar(30) NOT NULL,
email varchar(50) NOT NULL, UNIQUE(email),
confirmation_code int NOT NULL,
confirmation_tries int NOT NULL
) ENGINE=InnoDB';
$players = 'CREATE TABLE players (
id int UNSIGNED NOT NULL,
FOREIGN KEY(id) REFERENCES users(id),
cost int UNSIGNED NOT NULL,
strategy TINYINT UNSIGNED NOT NULL,
age int UNSIGNED NOT NULL,
%s
) ENGINE=InnoDB';
$records = array();
for ($i = 0; $i < NUM_RECORDS; $i++) {
$records[$i] = sprintf('record_%d int UNSIGNED NOT NULL', $i);
}
$players = sprintf($players, implode(', ', $records));
$kingdoms = 'CREATE TABLE kingdoms (
id int UNSIGNED NOT NULL,
FOREIGN KEY(id) REFERENCES users(id),
location int UNSIGNED NOT NULL,
building text NOT NULL,
level int UNSIGNED NOT NULL,
troops int UNSIGNED NOT NULL
) ENGINE=InnoDB';
$inboxes = 'CREATE TABLE inboxes (
recipientID int UNSIGNED NOT NULL,
FOREIGN KEY(recipientID) REFERENCES users(id),
messageID int UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(messageID),
message text NOT NULL,
date DATETIME NOT NULL
) ENGINE=InnoDB';
$lastActions = 'CREATE TABLE last_actions (
id int UNSIGNED NOT NULL,
FOREIGN KEY(id) REFERENCES users(id),
history text
) ENGINE=InnoDB';
$news = 'CREATE TABLE news (
id int UNSIGNED NOT NULL,
FOREIGN KEY(id) REFERENCES users(id),
entries text
) ENGINE=InnoDB';
/*
$dbh->exec($users);
$code = $dbh->errorCode();
if ($code !== '00000') {
var_dump($code);
echo '111111';
exit;
}
$dbh->exec($players);
$code = $dbh->errorCode();
if ($code !== '00000') {
var_dump($code);
echo '22222';
exit;
}
$dbh->exec($kingdoms);
$code = $dbh->errorCode();
if ($code !== '00000') {
var_dump($code);
echo '33333';
exit;
}
$dbh->exec($inboxes);
$code = $dbh->errorCode();
if ($code !== '00000') {
var_dump($code);
echo '44444';
exit;
}
$dbh->exec($lastActions);
$code = $dbh->errorCode();
if ($code !== '00000') {
var_dump($code);
echo '555555';
exit;
}
$dbh->exec($news);//
$code = $dbh->errorCode();
if ($code !== '00000') {
var_dump($code);
echo '666666';
exit;
}//*/
echo $users . ";" . $players . ";" . $kingdoms . ';' . $inboxes . ';' . $lastActions .';' . $news;
答案 0 :(得分:1)
HTTP错误500(内部服务器错误)是HTTP请求的错误响应。
使用 mysql_error 或您正在使用的任何内容来回显 mysql_query 的响应以获取错误。或检查error_logs。
它并不完全由mysql返回。
如果您的error_reporting已关闭,请将其设为ON。
error_reporting( E_ALL | E_STRICT );
ini_set( 'display_errors', 1 )