语法错误或引擎错误?

时间:2018-08-24 09:37:14

标签: php mysql

大家好,我正在尝试创建一个页面,以便从php页面创建数据库。但是在运行页面然后创建Mysql数据库时,浏览器向我返回此错误:

  

您的SQL语法有错误;使用新的权利   服务器的版本。

我将代码作为MyISAM引擎而不是MariaDB(或AIR)输入,所以我不理解问题,因为我从XAMPP的控制面板检查了细节,而我仍然使用的版本在MyISAM引擎中。

我将我使用的代码复制给所有想帮助我的人。

 < $db = mysql_connect('localhost', 'admin', 'pizzaballa') or die
 ('Non è possibile connettersi. Controllare i parametri di
 connessione.');


 $query = 'CREATE DATABASE IF NOT EXISTS moviesite';
 mysql_query($query, $db) or die(mysql_error($db));

 mysql_select_db('moviesite', $db) or die(mysql_error($db));

 $query = 'CREATE TABLE movie ( movie_id INTEGER UNSIGNED NOT NULL
 AUTO_INCRMENT, movie_name VARCHAR(255) NOT NULL, movie_type TINYINT
 NOT NULL DEFAULT 0, movie_year SMALLINT UNSIGNED NOT NULL DEFAULT 0,
 movie_leadactor INTEGER UNSIGNED NOT NULL DEFAULT 0, movie_director
 INTEGER UNSIGNED NOT NULL DEFAULT 0,

 PRIMARY KEY (movie_id), KEY movie_type (movie_type, movie_year) )
 ENGINE=MyISAM'; mysql_query($query, $db) or die (mysql_error($db));

 $query = 'CREATE TABLE movietype ( movietype_id TINYINT UNSIGNED NOT
 NULL AUTO_INCREMENT, movietype_label VARCHAR (100) NOT NULL, PRIMARY
 KEY (movietype_id) ) ENGINE=MyISAM'; mysql_query($query, $db) or die
 (mysql_error($db));

 $query = 'CREATE TABLE people ( people_id INTEGER UNSIGNED NOT NULL
 AUTO_INCREMENT, people_fullname VARCHAR (255) NOT NULL, people_isactor
 TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, people_isdirector TYNIINT(1)
 UNSIGNED NOT NULL DEFAULT 0,

 PRIMARY KEY (people_id) ) ENGINE=MyISAM'; mysql_query($query, $db) or
 die (mysql_error($db));

 echo 'Database movie creato correttamente!'; 

2 个答案:

答案 0 :(得分:0)

CREATE TABLE people ( people_id INTEGER UNSIGNED NOT NULL
 AUTO_INCREMENT, people_fullname VARCHAR (255) NOT NULL, people_isactor
 TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, people_isdirector TYNIINT(1)
 UNSIGNED NOT NULL DEFAULT 0,
 PRIMARY KEY (people_id) ) ENGINE=MyISAM

TYNIINT 是无效的列类型。应该将其更正为 TINYINT

完整的错误消息应该让您大致了解错误的来源。如果不是这样,将您的查询粘贴到任何带有语法着色的SQL编辑器中也可能很有用。

答案 1 :(得分:0)

“您的SQL语法有误;” -很清楚。这些mysql_query语句之一在SQL中出现错误。

1)始终将此类代码包装在try和hellip中; catch。阅读this

2)使用IDE(例如[Eclipse] 9https://www.eclipse.org/pdt/,但还有其他),并学习使用调试器。它是您拥有的最强大的工具。您可以设置一个断点,让代码运行,它将在此处停止。然后,您可以检查变量和调用堆栈,并逐行逐步执行代码,直到对错误进行编码为止。

这两个问题不仅可以回答这个问题,还可以回答您将来会问到的更多问题,但是现在您可以回答自己了。