簡體   English   中英

使用CREATE TABLE的SQL語法錯誤

[英]SQL Syntax Error with CREATE TABLE

嘗試執行以下代碼時,出現SQL Sytax錯誤:

CREATE TABLE ? (
ID INT(255) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`UUID` VARCHAR(36) NOT NULL
);

我使用PreparedStatement替換? 用字符串

錯誤消息:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an errorin your SQL syntax; check the manual that corresponds to your MySQL serverversion for the right syntax to use near ''95f7ed55-ab3d-46f9-bffe-72bf5780a1ec' (ID INT(255) UNSIGNED AUTO_INCREMENT PRIM' at line 1

謝謝你的幫助!

將表名放入反引號,其中包含-必須轉義。

您使用了單引號( ' ),這在SQL中是不好的。

不使用引號時,不允許使用符號(-)。 http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

標識符可以帶引號或不帶引號。 如果標識符包含特殊字符或為保留字,則在引用標識符時必須將其引用。 (例外:限定名稱中句點后的保留字必須是標識符,因此無需加引號。)

現在執行:

CREATE TABLE 95f7ed55-ab3d-46f9-bffe-72bf5780a1ec (
ID INT(255) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`UUID` VARCHAR(36) NOT NULL
);

但是第一行的標識符需要加引號:

CREATE TABLE `95f7ed55-ab3d-46f9-bffe-72bf5780a1ec` (

也許這樣的事情可以解決問題? (編輯:從Anil Kumar的答案中添加了“如果不存在”)

CREATE TABLE IF NOT EXISTS `?` (
ID INT(255) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`UUID` VARCHAR(36) NOT NULL
);

請嘗試以下查詢語法:

CREATE TABLE table_name (ID INT(255) UNSIGNED AUTO_INCREMENT PRIMARY KEY,UUID VARCHAR(36) NOT NULL);
pls try this code.

        CREATE TABLE `table_name`(
       `ID` INT( 255 ) UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
       `UUID` VARCHAR( 36 ) NOT NULL
        );

注意: table_name使用此符號。

-- DROP PROCEDURE IF EXISTS createTblDynamically;
DELIMITER //
CREATE PROCEDURE createTblDynamically(tblName VARCHAR(255))
BEGIN
    SET @tableName = tblName;
    SET @q = CONCAT('
        CREATE TABLE IF NOT EXISTS `' , @tableName, '` (
            ID INT(255) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`UUID` VARCHAR(36) NOT NULL
        ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    ');
    PREPARE stmt FROM @q;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;

END //

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM