CREATE TABLE IF NOT EXISTS 'test'(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`campaincode` VARCHAR( 100 ) NOT NULL ,
`description` VARCHAR( 100 ) NOT NULL ,
`paymentplantype` VARCHAR( 100 ) NOT NULL ,
`contractlength` INT NOT NULL ,
`monthlyannuityfactor` DOUBLE NOT NULL ,
`initialfee` DOUBLE NOT NULL ,
`notificationfee` DOUBLE NOT NULL ,
`interestratepercentage` INT NOT NULL ,
`interestfreemonths` INT NOT NULL ,
`paymentfreemonths` INT NOT NULL ,
`fromamount` DOUBLE NOT NULL ,
`toamount` DOUBLE NOT NULL ,
`timestamp` INT UNSIGNED NOT NULL ,
`storeid` INT NOT NULL
)
3 に答える
1
'
以下のように、テーブル名から文字を削除する必要があります
CREATE TABLE IF NOT EXISTS test(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`campaincode` VARCHAR( 100 ) NOT NULL ,
`description` VARCHAR( 100 ) NOT NULL ,
`paymentplantype` VARCHAR( 100 ) NOT NULL ,
`contractlength` INT NOT NULL ,
`monthlyannuityfactor` DOUBLE NOT NULL ,
`initialfee` DOUBLE NOT NULL ,
`notificationfee` DOUBLE NOT NULL ,
`interestratepercentage` INT NOT NULL ,
`interestfreemonths` INT NOT NULL ,
`paymentfreemonths` INT NOT NULL ,
`fromamount` DOUBLE NOT NULL ,
`toamount` DOUBLE NOT NULL ,
`timestamp` INT UNSIGNED NOT NULL ,
`storeid` INT NOT NULL
)
于 2013-07-19T08:29:27.757 に答える
0
テーブル名に引用符が含まれているため、バックティックが必要です。これを試して:
CREATE TABLE IF NOT EXISTS `test`(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`campaincode` VARCHAR( 100 ) NOT NULL ,
`description` VARCHAR( 100 ) NOT NULL ,
`paymentplantype` VARCHAR( 100 ) NOT NULL ,
`contractlength` INT NOT NULL ,
`monthlyannuityfactor` DOUBLE NOT NULL ,
`initialfee` DOUBLE NOT NULL ,
`notificationfee` DOUBLE NOT NULL ,
`interestratepercentage` INT NOT NULL ,
`interestfreemonths` INT NOT NULL ,
`paymentfreemonths` INT NOT NULL ,
`fromamount` DOUBLE NOT NULL ,
`toamount` DOUBLE NOT NULL ,
`timestamp` INT UNSIGNED NOT NULL ,
`storeid` INT NOT NULL
)
いくつかの有用な情報、バッククォートは常に使用する必要があります。しかし、チームがそれらを使用したくない理由がいくつかあります。
利点:
- それらを使用すると、予約語や禁止文字はありません。
- 場合によっては、より詳細なエラー メッセージが表示されます。
- 悪い慣行を回避する場合は気にしませんが...実際には、SQL インジェクションを回避するための適切な方法である場合があります。
短所:
- それらは標準ではなく、通常は移植できません。ただし、識別子の一部としてバックティックを使用しない限り (これは私が想像できる最悪の方法です)、バックティックを自動的に削除してクエリを移植できます。
- クエリの一部が Access からのものである場合、テーブル名が " で引用されている可能性があります (すべての " をやみくもに削除することはできません)。ただし、バッククォートと二重引用符の混合は許可されています。
- 一部の愚かなソフトウェアまたは関数は、クエリをフィルタリングし、バッククォートに問題があります。ただし、これらは ASCII の一部であるため、ソフトウェア/機能が非常に悪いことを意味します。
参照してください: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
于 2013-07-19T10:19:46.260 に答える