最近很多小伙伴都在问php-table_exists()方法可能无法正常工作和php无法实现的功能这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Androiddrawableic
最近很多小伙伴都在问php-table_exists()方法可能无法正常工作和php无法实现的功能这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展Android drawable ic_menu_star无法正常工作?、Android file.exists()无法正常工作、array_key_exists无法正常工作、Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在等相关知识,下面开始了哦!
本文目录一览:- php-table_exists()方法可能无法正常工作(php无法实现的功能)
- Android drawable ic_menu_star无法正常工作?
- Android file.exists()无法正常工作
- array_key_exists无法正常工作
- Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在
php-table_exists()方法可能无法正常工作(php无法实现的功能)
我开始使用codeigniter 2.1.0编写一个简单的Model类.我现在想要它做的就是创建并删除它代表的MySQL表.这是代码:
<?PHP
class Users_model extends CI_Model {
public function createTable(){
if( $this->db->table_exists('users') == FALSE ){
$query = "CREATE TABLE users(
id SERIAL PRIMARY KEY,
email VARCHAR(52) NOT NULL check(email <> ''),
UNIQUE (email)
)ENGINE = InnoDB;";
$this->db->query($query);
}
}
public function deleteTable(){
if( $this->db->table_exists('users') ){
$query = "DROP TABLE users;";
$this->db->query($query);
} else {
echo "users not found <br />";
$tables = $this->db->list_tables();
foreach ($tables as $table)
{
echo $table."<br />";
}
}
}
}
?>
这是我在主类中执行的代码:
$this->load->model('users_model');
$this->users_model->deleteTable();
$this->users_model->createTable();
第一轮很好,花花公子.创建表就好了.但是,当我再次运行它时,我得到了输出:
users not found
users
经过进一步检查,我意识到table_exists()永远不会返回TRUE. var_dump($this-> db-> table_exists(‘users’));返回bool(false).
所以,我做错什么了吗?这很简单,从documentation复制粘贴.Google不返回任何相关内容,作为C程序员,我的心态始终是“如果有错误,那就是你的错误.(Richard Stallman永远不会错)”.但是,由于斯托曼先生与此无关,所以有可能.
TL; DR
为什么上面的代码中的table_exists(‘users’)永远不会返回TRUE,即使list_tables()确实返回了’users’;
解决方法:
尝试使用var_dump()代替echo.布尔值不适用于echo.
var_dump( $this->db->table_exists('users') );
table_exists的source code看起来像这样:
function table_exists($table_name)
{
return ( ! in_array($this->_protect_identifiers($table_name, TRUE, FALSE, FALSE), $this->list_tables())) ? FALSE : TRUE;
}
来自评论的更新
如果您查看_protect_identifiers,则会将数据库名称添加到表名称中.但是应该有一个. db.table之间.也许您的数据库配置搞砸了?
Android drawable ic_menu_star无法正常工作?
我正在设计XML菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:icon="@android:drawable/ic_menu_preferences" android:title="@string/menu_preferences" android:id="@+id/menu_preferences"/>
<item android:id="@+id/menu_bookmarks" android:title="@string/menu_bookmarks" android:icon="@android:drawable/ic_menu_star"></item>
<item android:title="@string/menu_history" android:id="@+id/menu_history" android:icon="@android:drawable/ic_menu_recent_history"></item>
</menu>
当我尝试使用android画眉笔ic_menu_star时,我的日食抛出错误:
[2011-07-06 00:52:28 - Testapp] W/ResourceType( 1852): Bad XML block: header size 51 or total size 3342532 is larger than data size 0
[2011-07-06 00:52:28 - Testapp] C:\eclipseprojects\Testapp\res\menu\search_menu.xml:4: error: Error: Resource is not public. (at 'icon' with value '@android:drawable/ic_menu_star').
我已经检查了项目中的android资源,它就在其中。我在android 2.1框架上构建我的项目。这是一个错误吗?
Android file.exists()无法正常工作
哈o
这是一些将数据类写入文件的代码,然后检查该文件是否存在.我可以看到该文件存在于模拟器上,但是file.exists()并因此saveStateAvailable()返回false.
private void saveStateFile() {
/*DEBUG*/Log.d(this.getClass().getName(), "saveStateFile: Started");
mGameData = getGameData();
try {
FileOutputStream fileoutputstream = openFileOutput(mGameData.pilotName + STATE_FILE_EXTENSION, Context.MODE_WORLD_WRITEABLE);
ObjectOutputStream objectoutputstream;
objectoutputstream = new ObjectOutputStream(fileoutputstream);
objectoutputstream.writeObject(mGameData);
objectoutputstream.close();
fileoutputstream.close();
/*DEBUG*/Log.i(this.getClass().getName(), "saveStateFile: State saved to "+mGameData.pilotName + STATE_FILE_EXTENSION);
} catch (IOException e) {
/*DEBUG*/Log.e(this.getClass().getName(), "saveStateFile: Error writing data state file, "+mGameData.pilotName + STATE_FILE_EXTENSION);
e.printstacktrace();
}
/*DEBUG*/Log.d(this.getClass().getName(), "saveStateFile: Finished stateFileAvailable="+stateFileAvailable());
}
private boolean stateFileAvailable() {
File file = new File(mGameData.pilotName + STATE_FILE_EXTENSION);
/*DEBUG*/Log.d(this.getClass().getName(), "stateFileAvailable: Called ("+mGameData.pilotName + STATE_FILE_EXTENSION+" exists = "+file.exists()+")");
return file.exists();
}
有任何想法吗?
-皱纹
解决方法:
您需要使用Context#getFileStreamPath(String)
,其中字符串是您尝试访问的File对象的文件名.然后,您可以在该对象上调用File#exists.所以:
File file = getFileStreamPath(mGameData.pilotName + STATE_FILE_EXTENSION);
使您可以访问File对象,该对象指向私有应用程序存储区域中的正确位置.
您的代码将要执行的操作是访问文件/<您的文件名>.在根路径上.您的文件显然不存在.
array_key_exists无法正常工作
array_key_exists不适用于大型多维数组。对于前
$arr = array(
'1' => 10,'2' => array(
'21' => 21,'22' => 22,'23' => array(
'test' => 100,'231' => 231
),),'3' => 30,'4' => 40
);
array_key_exists(’test’,$ arr)返回’false’,但它可以与一些简单的数组一起使用。
Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在
Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在,需要具体代码示例
MySQL是最常用的关系型数据库之一,具有广泛的应用。在使用MySQL时,有时会遇到报错信息:"Can''t create table ''table_name''; table exists",意思是无法创建表,因为表已经存在。这种错误信息通常出现在我们尝试创建一个已经存在的表时。本文将介绍如何解决这个问题,并提供相应的代码示例。
首先,让我们了解一下MySQL的CREATE TABLE语句的基本语法:
CREATE TABLE table_name (
column1 datatype constraints, column2 datatype constraints, ...
);
其中,table_name是你要创建的表的名称,column1、column2等是表中的列,datetype是列的数据类型,而constraints是列的约束条件。
当我们执行CREATE TABLE语句时,MySQL会尝试创建一个新的表。如果指定的表名已经存在,MySQL将报错,并提示无法创建表,因为表已存在。
为了解决这个问题,我们可以使用以下两种方法之一:
方法一:删除已存在的表
在创建表之前,我们可以先检查表是否已经存在,然后再做相应的操作。若表存在,我们可以先删除它,然后再重新创建。
下面是一个示例代码:
DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name (
column1 datatype constraints, column2 datatype constraints, ...
);
在上面的代码中,我们首先使用DROP TABLE语句检查并删除已存在的表。如果表存在,则会被删除。接下来,我们使用CREATE TABLE语句创建一个新的表。
方法二:使用CREATE TABLE IF NOT EXISTS语句
CREATE TABLE IF NOT EXISTS是一个MySQL的扩展语句,它能够检查表是否存在。如果表不存在,它会创建一个新表;如果表已经存在,则不做任何操作。
下面是一个示例代码:
CREATE TABLE IF NOT EXISTS table_name (
column1 datatype constraints, column2 datatype constraints, ...
);
上述代码中,我们使用了CREATE TABLE IF NOT EXISTS语句来创建一个新表。如果表已经存在,则不进行任何操作。
综上所述,解决MySQL报错:"Can''t create table ''table_name''; table exists",无法创建表因为表已经存在的问题,我们可以使用DELETE语句删除已存在的表,或者使用CREATE TABLE IF NOT EXISTS语句来判断表是否存在,并分别执行相应的操作。以下是一个完整的示例代码,演示了如何使用这两种方法:
方法一:删除已存在的表
DROP TABLE IF EXISTS table_name;
CREATE TABLE table_name (
column1 datatype constraints, column2 datatype constraints, ...
);
方法二:使用CREATE TABLE IF NOT EXISTS语句
CREATE TABLE IF NOT EXISTS table_name (
column1 datatype constraints, column2 datatype constraints, ...
);
无论你选择哪种方法,都可以解决MySQL报错:"Can''t create table ''table_name''; table exists"的问题。根据你的具体需求和数据情况,选择合适的方法来解决问题,并确保正确地创建表。
以上就是Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在的详细内容,更多请关注php中文网其它相关文章!
今天关于php-table_exists()方法可能无法正常工作和php无法实现的功能的介绍到此结束,谢谢您的阅读,有关Android drawable ic_menu_star无法正常工作?、Android file.exists()无法正常工作、array_key_exists无法正常工作、Can''t create table ''table_name''; table exists - 如何解决MySQL报错:无法创建表,表已存在等更多相关知识的信息可以在本站进行查询。
本文标签: