1

現在、多くのサーバーで最新バージョンの MySQL が使用されています。次のコードを実行するとエラーが発生します。

$drop_table = mysql_query("DROP TABLE IF EXISTS `$t_ads`");
$sqls[$t_ads] = "CREATE TABLE `$t_ads` (
  `adid` int unsigned NOT NULL auto_increment,
  `adtitle` varchar(100) NOT NULL default '',
  `addesc` longtext NOT NULL,
  `area` varchar(50) NOT NULL default '',
  `email` varchar(50) NOT NULL default '',
  `showemail` enum('0','1','2') NOT NULL default '0',
  `password` varchar(50) NOT NULL default '',
  `code` varchar(35) NOT NULL default '',
  `cityid` smallint unsigned NOT NULL default '0',
  `subcatid` smallint unsigned NOT NULL default '0',
  `price` DECIMAL( 10, 2 ) NOT NULL default '0',
  `othercontactok` enum('0','1') NOT NULL default '0',
  `hits` int unsigned NOT NULL default '0',
  `ip` varchar(15) NOT NULL default '',
  `verified` enum('0','1') NOT NULL default '0',
  `abused` int unsigned NOT NULL default '0',
  `enabled` enum('0','1') NOT NULL default '0',
  `createdon` datetime NOT NULL default '0000-00-00 00:00:00',
  `expireson` datetime NOT NULL default '0000-00-00 00:00:00',
  `timestamp` timestamp(14) NOT NULL,
  `paid` enum('0','1','2') NOT NULL default '2',
  PRIMARY KEY  (`adid`),
  KEY `subcatid` (`subcatid`),
  KEY `cityid` (`cityid`),
  KEY `verified` (`verified`),
  KEY `enabled` (`enabled`),
  KEY `paid` (`paid`)
) TYPE=MyISAM;";

古いバージョンの mysql を搭載したサーバーはこれを受け入れるようですが、新しいバージョンはまったく受け入れず、エラーが発生します。PHP データベースのセットアップが少し大きいため、それに関連する多くのエラーがあります。エラーの例を以下に示します。

#1064- SQL 構文にエラーがあります。paid21 行目の '(14) NOT NULL, enum, NOT NULL default '2', PRIMARY KEY ( adid), K'付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

2 に答える 2

1

コードの単純な SQL 部分は問題ないように見えます (MySQL 5.6 でテストしたところです) が、通常timestampは列名などのキーワードを使用しないことをお勧めします。テーブルは MySQL 5.6 で作成されますが、次の 2 つの警告が表示されます。

  1. この構文TIMESTAMP(14)は推奨されておらず、MySQL 6.0 で削除されます。TIMESTAMP代わりに使用してください
  2. この構文TYPE=storage_engineは推奨されておらず、MySQL 6.0 で削除されます。ENGINE=storage_engine代わりに使用してください

これで問題が解決しない場合は、使用している実際の MySQL バージョンを投稿してください。

于 2012-09-26T04:24:52.497 に答える
0

カラム名を mysql キーワード 'timestamp' ではなく、変更してください。

変更

`timestamp` timestamp(14) NOT NULL,

`<SOME OTHERNAME>` timestamp NOT NULL,
于 2012-09-26T04:23:46.853 に答える