MySQL "CREATE TABLE IF NOT EXISTS"-> 오류 1050
명령 사용 :
CREATE TABLE IF NOT EXISTS `test`.`t1` (
`col` VARCHAR(16) NOT NULL
) ENGINE=MEMORY;
MySQL 쿼리 브라우저에서 이것을 두 번 실행하면 다음과 같은 결과가 나타납니다.
테이블 't1'이 이미 존재합니다. 오류 1050
"IF NOT EXISTS"테이블을 만들면 오류가 발생하지 않는다고 생각했을 것입니다. 내가 뭔가 빠졌거나 버그입니까? 버전 5.1을 실행하고 있습니다. 감사.
5.0.27에서 잘 작동합니다.
테이블이 존재한다는 경고 (오류가 아님) 만 표시됩니다.
이미 언급했듯이 경고는 오류가 아니지만 (나와 같은 경우) 경고없이 작업을 실행하려면 해당 경고를 비활성화 한 다음 완료되면 다시 활성화 할 수 있습니다.
SET sql_notes = 0; -- Temporarily disable the "Table already exists" warning
CREATE TABLE IF NOT EXISTS ...
SET sql_notes = 1; -- And then re-enable the warning again
다음 쿼리를 사용하여 MySql의 특정 데이터베이스에 대한 테이블을 만들 수 있습니다.
create database if not exists `test`;
USE `test`;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
/*Table structure for table `test` */
CREATE TABLE IF NOT EXISTS `tblsample` (
`id` int(11) NOT NULL auto_increment,
`recid` int(11) NOT NULL default '0',
`cvfilename` varchar(250) NOT NULL default '',
`cvpagenumber` int(11) NULL,
`cilineno` int(11) NULL,
`batchname` varchar(100) NOT NULL default '',
`type` varchar(20) NOT NULL default '',
`data` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
);
귀하에게도 적용될 수있는 문제에 대한 해결책이 있습니다. 내 데이터베이스는 DROP TABLE
테이블을 찾을 수 없어서 실패한 상태 였지만 CREATE TABLE
MySQL이 테이블이 존재한다고 생각했기 때문에 실패했습니다. (이 상태는 IF NOT EXISTS 절을 쉽게 망칠 수 있습니다.)
결국 이 해결책을 찾았습니다 .
sudo mysqladmin flush-tables
나를 위해,없이 sudo
다음 오류가 발생했습니다.
mysqladmin: refresh failed; error: 'Access denied; you need the RELOAD privilege for this operation'
(OS X 10.6에서 실행)
create database if not exists `test`;
USE `test`;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
/*Table structure for table `test` */
***CREATE TABLE IF NOT EXISTS `tblsample` (
`id` int(11) NOT NULL auto_increment,
`recid` int(11) NOT NULL default '0',
`cvfilename` varchar(250) NOT NULL default '',
`cvpagenumber` int(11) NULL,
`cilineno` int(11) NULL,
`batchname` varchar(100) NOT NULL default '',
`type` varchar(20) NOT NULL default '',
`data` varchar(100) NOT NULL default '',
PRIMARY KEY (`id`)
);***
데비안에서 @CraigWalker와 비슷한 문제가있었습니다. 내 데이터베이스는 DROP TABLE
테이블을 찾을 수 없어서 실패한 상태 였지만 CREATE TABLE
MySQL은 테이블이 여전히 존재한다고 생각했기 때문에 실패했습니다. 그래서 깨진 테이블은 phpmyadmin에서 볼 때 없었지만 어딘가에 여전히 존재했습니다.
I created this state by just copying the whole folder that contained a database with some MyISAM
and some InnoDB
tables
cp -a /var/lib/mysql/sometable /var/lib/mysql/test
(this is not recommended!)
All InnoDB tables where not visible in the new database test
in phpmyadmin.
sudo mysqladmin flush-tables
didn't help either.
My solution: I had to delete the new test database with drop database test
and copy it with mysqldump
instead:
mysqldump somedatabase -u username -p -r export.sql
mysql test -u username -p < export.sql
If anyone is getting this error after a Phpmyadmin export, using the the custom options and adding the "drop tables" statements cleared this right up.
Create mysql connection with following parameter. "'raise_on_warnings': False". It will ignore the warning. e.g.
config = {'user': 'user','password': 'passwd','host': 'localhost','database': 'db', 'raise_on_warnings': False,}
cnx = mysql.connector.connect(**config)
ReferenceURL : https://stackoverflow.com/questions/1650946/mysql-create-table-if-not-exists-error-1050
'programing tip' 카테고리의 다른 글
웹팩을 사용하는 여러 HTML 파일 (0) | 2021.01.08 |
---|---|
Visual Studio에서 특정 줄 번호로 파일 열기 (0) | 2021.01.08 |
현재 가장 안전한 단방향 암호화 알고리즘은 무엇입니까? (0) | 2021.01.08 |
Visual Studio IDE-이전으로 돌아 가기 (0) | 2021.01.08 |
Python 대 C # /. NET — 대규모 웹 애플리케이션을 개발하는 데 사용할 때 고려해야 할 주요 차이점은 무엇입니까? (0) | 2021.01.08 |