私は2つのプラットフォームで作業しています。1 つは XAMPP がロードされた Windows 10 コンピューターで、もう 1 つはデフォルトの Apache、PHP、および MySQL がロードされた Mac OS X El Capitan です。目標は、リモート サーバーからダウンロードした .sql ファイルをローカル サーバーにインポートすることです。コードは次のとおりです。
$dbhost = 'localhost';
$dbuser = 'someuser';
$dbpass = 'somepassword';
$dbname = 'somedb';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
$filename = "somesql.sql";
$sqlSource = file_get_contents($filename);
$cmp = $mysqli->multi_query($sqlSource);
if($cmp){ $message = 'Import Successful'; }
else{ $message = 'Import Unsuccessful | '.$mysqli->error; }
ただし、上記のコードは Windows 10 コンピューターの XAMPP では機能しますが、Mac OS X では機能しません。Mac OS X ではtablename
、.sql ファイルから CREATE TABLE ステートメントのみを実行しますが、INSERT INTO tablename VALUES ビットは実行しません。エラーは発生しません。
また、Apache、PHP、および MySQL が個別にインストールされている Windows でも機能しません。
見逃したものはありますか、それとも Mac OS X で動作させるために微調整が必要な構成はありますか?
編集: 以下は、生成された sql ファイル somesql.sql です。
CREATE TABLE `sometable` (
`id` smallint(9) unsigned NOT NULL AUTO_INCREMENT,
`var_1` varchar(200) DEFAULT NULL,
`var_2` varchar(200) DEFAULT NULL,
`var_3` varchar(200) DEFAULT NULL,
`int_1` int(100) DEFAULT NULL,
`int_2` int(100) DEFAULT NULL,
`int_3` int(100) DEFAULT NULL,
`text_1` text COMMENT 'depot address',
`text_2` text,
`text_3` text,
`decimal_1` decimal(10,2) DEFAULT NULL,
`decimal_2` decimal(10,2) DEFAULT NULL,
`decimal_3` decimal(10,2) DEFAULT NULL,
`datetime_1` datetime DEFAULT NULL,
`datetime_2` datetime DEFAULT NULL,
`datetime_3` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `var_1` (`var_1`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=latin1;
INSERT INTO sometable VALUES
("2","BN","","","","","","Some details","","","","","","","",""),
("3","MK","","","","","","Some other details","","","","","","","",""),
("4","CH","","","","","","Some other other details","","","","","","","","");