我在Mysql Server 5.7.13上运行,每次尝试创建表时都会抛出此错误:
创建表时出错:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在'CREATE TABLE内容附近使用正确的语法(第4行的ID为INT NOT NULL AUTO_INCREMENT,page_id longtext,t'
这是我的查询代码:
<?php
// Connect to MySQL
$link = mysql_connect('localhost', 'root', '****');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
$name = $_POST['name'];
// Make my_db the current database
$db_selected = mysql_select_db($name, $link);
if (!$db_selected) {
// If we couldn't, then it either doesn't exist, or we can't see it.
$sql = "
CREATE DATABASE IF NOT EXISTS $name;
USE $name;
CREATE TABLE content
(
id INT NOT NULL AUTO_INCREMENT,
page_id longtext,
title longtext,
about longtext,
content longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE details
(
id INT NOT NULL AUTO_INCREMENT,
website_name longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE media
(
id INT NOT NULL AUTO_INCREMENT,
page_id longtext,
post_id longtext,
time longtext,
date longtext,
format longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE pages
(
id INT NOT NULL AUTO_INCREMENT,
title longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;";
var_dump($sql);
if (mysql_query($sql, $link)) {
echo "Database $name created successfully\n<br/>";
} else {
echo 'Error creating database: ' . mysql_error() . "\n<br/>";
}
}
mysql_close($link);
?>
Sql的Dumb结果
/storage/www/cms/dbcreate.php:51:string
'USE socialnetwk;
CREATE TABLE content
(
id INT NOT NULL AUTO_INCREMENT,
page_id longtext,
title longtext,
about longtext,
content longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE details
(
id INT NOT NULL AUTO_INCREMENT,
website_name longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE media
(
id INT NOT NULL AUTO_INCREMENT,
page_id longtext,
post_id longtext,
time longtext,
date longtext,
format longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE pages
('... (length=600)
Database socialnetwk created successfully
Error creating database: 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 'CREATE TABLE content ( id INT NOT NULL AUTO_INCREMENT, page_id longtext, t' at line 5
答案 0 :(得分:0)
我做了一个$ sql的var_dump,前两个指令(CREATE DATABASE和USE)缺少分号,应该如下:
$sql = "
CREATE DATABASE IF NOT EXISTS $name;
USE $name;
CREATE TABLE content
(
id INT NOT NULL AUTO_INCREMENT,
page_id longtext,
title longtext,
about longtext,
content longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE details
(
id INT NOT NULL AUTO_INCREMENT,
website_name longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE media
(
id INT NOT NULL AUTO_INCREMENT,
page_id longtext,
post_id longtext,
time longtext,
date longtext,
format longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE pages
(
id INT NOT NULL AUTO_INCREMENT,
title longtext,
PRIMARY KEY (id)
) ENGINE=InnoDB;";