这个用于创建 MySQL 表的 PHP 脚本有啥问题?

Posted

技术标签:

【中文标题】这个用于创建 MySQL 表的 PHP 脚本有啥问题?【英文标题】:What's wrong with this PHP script for creating MySQL tables?这个用于创建 MySQL 表的 PHP 脚本有什么问题? 【发布时间】:2016-12-09 03:13:03 【问题描述】:

这是应该安装我的 mysql 数据库表的脚本:

include("parameter.php");
$link = mysql_connect($host,$user,$password); 
mysql_select_db($database); 

$anfrage="DROP TABLE IF EXISTS praktikumsplatz;"; 
mysql_query($anfrage);
$anfrage="CREATE TABLE praktikumsplatz (
praktikumsplatz_id INTEGER(6) not null auto_increment, 
einrichtung VARCHAR(30), 
einrichtungort VARCHAR(30),
ansprechname VARCHAR(30), 
ansprechvorname VARCHAR(30),
ansprechmail VARCHAR(50), 
praktikumstyp VARCHAR(30), 
bezahlung VARCHAR(30), 
pbeginn DATE,
pende DATE,
beschreibung TEXT,
primary key (praktikumsplatz_id),
fulltext (einrichtung));";
mysql_query($anfrage);

$anfrage="DROP TABLE IF EXISTS studierender;"; 
mysql_query($anfrage); 
$anfrage="CREATE TABLE studierender (
matrikelnummer INTEGER(5) not null, 
sname VARCHAR(30), 
svorname VARCHAR(30),
semail VARCHAR(50), 
studiengang VARCHAR(30), 
primary key (matrikelnummer),
fulltext (sname, svorname, studiengang));";
mysql_query($anfrage);

$anfrage="DROP TABLE IF EXISTS vermittlung;"; 
mysql_query($anfrage); 
$anfrage="CREATE TABLE vermittlung (
vermittlung_id INTEGER(6) not null auto_increment, 
praktikumsplatz_id INTEGER, 
matrikelnummer INTEGER,
vermittlungsdatum DATE,
primary key (vermittlung_id));";
mysql_query($anfrage);

echo "Installation erfolgreich abgeschlossen!";
mysql_close($link);

这里可以看到提到的parameter.php

$host = "localhost";
$user = "root";
$password = "usbw";
$database = "test";

这是我在浏览器中执行安装脚本时遇到的错误(我使用带有 USBWebserver 堆栈的 USB 记忆棒,类似于 Xampp):

致命错误:第 24 行的 E:\USBMySQLServer\root\praktikumsboerse\install.php 中的最大执行时间超过 30 秒

这是 this 所指的那一行,但我怀疑这是导致这种奇怪行为的原因:

$anfrage="DROP TABLE IF EXISTS studierender;"; 

【问题讨论】:

在您尝试删除该表时,其他进程正在读取该表。 【参考方案1】:

您收到错误是因为您的请求处理时间过长。您可以在 php.ini 或使用 ini_set 增加执行时间。但更新/支持数据库的最佳解决方案 - 从控制台运行脚本。

所有迁移都从控制台运行。只需打开控制台并运行:

php my_script.php

您可以使用任何工具进行迁移。例如something like this。这将是最好的解决方案。

【讨论】:

【参考方案2】:

-将其放在 PHP 脚本的顶部

ini_set('max_execution_time', 300);

【讨论】:

我更改了最大执行时间,但这里没有更改。它会挂起,安装脚本仍然没有正确执行。【参考方案3】:

在这段代码中,第一个错误是运算符包含。如果配置文件不存在,你必须得到错误。

尝试使用:

require("parameter.php");

【讨论】:

以上是关于这个用于创建 MySQL 表的 PHP 脚本有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

PHP PHP脚本,用于制作MySQL表的备份副本

mysql 字段的注释有啥用

需要通过 PHP 将大型 CSV 文件导入多个 MySQL 表的高效方法

SQL和MySQL有啥区别?

如何从 php 脚本中获取 JSON 格式的 mysql 表的所有值?

这个使用 Pear Mail 发送邮件的 PHP 脚本有啥问题?