我使用的是PDO :: EXEC()将数据插入到这些表中的一个之后导入从phpMyAdmin的出口和右表。每次我尝试导入它似乎截断它,因为插入之后的select语句插入后做出的表文件正确显示的行。但是,如果我看它在运行脚本,即使我在插入后立即退出脚本后手动表是空的。请注意,我不运行该脚本或手动运行SQL导入文件得到任何错误。
我找不到任何关于此问题的任何东西。我希望有人有一个答案。提前致谢。
PHP
$db->exec(file_get_contents('test.sql'));
$db->query("
INSERT INTO test
SET
test1 = 5,
test2 = 'testing123'
");
phpMyAdmin的出口
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `test`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `test`
--
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`test1` int(11) NOT NULL,
`test2` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Indexen voor geëxporteerde tabellen
--
--
-- Indexen voor tabel `test`
--
ALTER TABLE `test`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT voor geëxporteerde tabellen
--
--
-- AUTO_INCREMENT voor een tabel `test`
--
ALTER TABLE `test`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
所以,这个问题似乎已经被导出文件行SET AUTOCOMMIT = 0;
引起的。我没有的MySQL足够的知识来确切地知道它,但一切似乎仍然没有它的工作。